8
votes

Comment sélectionner des valeurs de ligne différentes dans une colonne différente

J'ai une table comme.

ID    ADate            TDate
1     12/12/2014      24/12/2014
2     13/12/2014      23/12/2014
3     12/03/2014      12/04/2014
4         -           12/12/2014
5         -           12/04/2014


8 commentaires

@NoidEforname Comment est-ce censé travailler?


@Radugheorghiu bien, avec les informations données, c'est tout ce que je peux fournir


@NoidEforname Si vous essayez d'aider le OP Sortir, demandez simplement plus de détails. Et si vous avez l'intention de troll au moins, assurez-vous que votre requête ne renvoie pas une erreur de syntaxe.


J'ai édité ma question.


@Rain ma réponse n'utilise pas le groupe par BTW


@NoidEfornomame Je cours votre requête et vérifie. En fait, je rejoint encore de plus de tables, donc son retour sur des lignes en double. Neuvable de la manière pour la réponse


@Rain si vous voulez, je serai heureux de continuer à aider avec d'autres informations


Quelle version de rdbms utilisez-vous?


3 Réponses :


3
votes

Vous pouvez utiliser une instruction WHERE et une instruction de jointure pour obtenir:

SELECT a.id, a.date AS ADate, b.date AS TDate
FROM table a
JOIN table b on a.id = b.id and b.value = 'T'
WHERE a.value = 'A'


0 commentaires

3
votes

Utiliser agrégat conditionnel . Essayez ceci xxx

Mise à jour: pour obtenir des lignes avec le même identifiant xxx


3 commentaires

Je ne peux pas utiliser de groupe par parce que ma table réelle contient de nombreuses lignes avec le même identifiant et que je souhaite chaque identifiant, pas en groupe.


@Rain ajoutez ensuite des données d'échantillonnage et une sortie attendue en conséquence !!


J'ai compris. Cela m'a donné la bonne réponse. Bien que j'ai besoin de le modifier un peu pour mon but.Merci



0
votes

Une autre option avec une fonction de classement Row_Number

;WITH cte AS
 (
  SELECT *, ROW_NUMBER() OVER(PARTITION BY id ORDER BY [date]) AS rn
  FROM dbo.test103 t  
  )
  SELECT c.id, c.[date] AS ADate, c2.[date] AS TDate
  FROM cte c LEFT JOIN cte c2 ON c.Id = c2.Id AND c.rn = c2.rn - 1 AND c.Value != c2.Value
  WHERE c.value = 'A'


0 commentaires