0
votes

Utiliser des critères de réunion de la valeur de groupe comme nouvel identifiant de groupe

J'ai un jeu de données avec une colonne d'identifiant pour chaque groupe et valeurs pour chaque instance du groupe. J'aimerais modifier l'identifiant de chaque groupe pour être une valeur de ligne par certains critères, disons dans ce cas la valeur de la ligne qui commence par a (une seule instance un par groupe ) . Comment puis-je transformer les données pour créer un tel nouvel identifiant?

code pour créer des données d'échantillonnage xxx

le résultat souhaité que je voudrais avoir avec le Une valeur d'instance% par groupe sous forme de colonne. xxx


0 commentaires

3 Réponses :


1
votes

Je pense que vous pouvez le faire en utilisant la logique suivante

SELECT T1.*,CTE_1.Val 
FROM @Test T1 INNER JOIN 
    (SELECT ID,VAL FROM @Test WHERE Val like 'A%') as CTE_1 
ON T1.ID = CTE_1.ID


0 commentaires

3
votes

plutôt que 2 analyses, vous pouvez utiliser une fonction de fenêtre: xxx

si vous ne voulez pas null lorsque vous n'avez pas de ligne à partir de A , il suffit d'utiliser val au lieu de la case expression.


0 commentaires

0
votes

Bien utiliser Sélectionner Select dans Sélectionner une instruction est vraiment mauvais pour la performance.

Utilisez la jointure gauche. P>

select t1.Val, t1.ID , t.Val as val2
from @Test t1
left join @Test t on t1.ID = t.ID and t.Val like 'A%' 


0 commentaires