J'ai une table SQL avec la valeur actuelle et la valeur précédente.
Id Column Value Pvalue 1 Value2 V V1 2 Value1 B B1 2 Value2 W W1 3 Value1 C C1
4 Réponses :
Voici un moyen facile:
SELECT Id, 'Value1' [Column], Value1 Value, PValue1 PValue FROM YourTable WHERE ISNULL(Value1,'') != ISNULL(PValue1,'') UNION ALL SELECT Id, 'Value2' [Column], Value2 Value, PValue2 PValue FROM YourTable WHERE ISNULL(Value2,'') != ISNULL(PValue2,'')
Vous pouvez utiliser un voir Juste parce que j'aime utiliser la fonction pivot em>, voici une version qui utilise à la fois l'impulsion / EM> et les fonctions em> pivot em> pour obtenir le résultat: p> voir cross appliquer code> pour impucher les données:
+1 parce que je ne savais pas que vous pourriez utiliser la croix s'appliquer de cette façon!
Que diriez-vous d'utiliser un Union:
SELECT * FROM (SELECT Id, 'Value1' [Column], Value1 [Value], PValue1 [PValue] FROM table_name UNION ALL SELECT Id, 'Value2' [Column], Value2 [Value], PValue2 [PValue] FROM table_name)tmp WHERE Value != PValue ORDER BY Id
Enfin, et pour l'exhaustivité, il existe un Députation commande. Cependant, puisque vous avez deux colonnes que vous souhaitez improvoir, il serait probablement plus simple d'utiliser l'une des autres solutions. p>