Je résous un problème pour le service de messagerie, ils ont des itinéraires différents et chaque route peut avoir un nombre n de parcelles. Ils organisent 2 colis dans un sac. J'ai réussi à obtenir des données comme:Mise à jour de la valeur de colonne en utilisant le groupe par une autre valeur de colonne
Route | ParcelId | GroupId |
-------|----------|---------
NORTH | P1 | 1 |
NORTH | P2 | 1 |
NORTH | P3 | 2 |
NORTH | P4 | 2 |
NORTH | P5 | 3 |
EAST | P6 | 1 |
EAST | P7 | 1 |
EAST | P8 | 2 |
CENTRAL| P9 | 1 |
CENTRAL| P10 | 1 |
CENTRAL| P11 | 2 |
CENTRAL| P11 | 2 |
-------|----------|---------|
utilisant ci-dessous: requête
select
Route, ParcelId
-- calculate the group number for every 2 parcels, increment 1
ceiling(row_number() over(partition by route order by ParcelId)/2.0) GroupId
from Parcel (nolock)
where
ship_date = cast(getdate() as date)
ici Parcel P1, P2 de la route du Nord et P6, P7 de la route Est ont même GroupId. Mais je veux un identifiant unique sur Parcels basé sur Route ie au lieu de seulement 1/2/3 .. si je pouvais obtenir N1, N2, N3 (pour la route du Nord) et E1, E2 (pour la route de l'Est), il sera utile pour moi tout en arrangeant des colis à l'intérieur des sacs.
Je veux donc le jeu de résultats devrait ressembler à:
Route | ParcelId | GroupId |
-------|----------|---------
NORTH | P1 | N1 |
NORTH | P2 | N1 |
NORTH | P3 | N2 |
NORTH | P4 | N2 |
NORTH | P5 | N3 |
EAST | P6 | E1 |
EAST | P7 | E1 |
EAST | P8 | E2 |
CENTRAL| P9 | C1 |
CENTRAL| P10 | C1 |
CENTRAL| P11 | C2 |
CENTRAL| P11 | C2 |
-------|----------|---------|
Si pas exactement N1/E1/C1 .. identifiant doit être unique (basé sur la route) et je dois mettre à jour un champ vide sur la table Parcel , aurait donc besoin d'un script de mise à jour pour le même.
Tout plomb sera apprécié.
Merci,
Merci Sagar Gangwal pour l'édition. –