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>