J'ai une table qui ressemble à ce qui suit:Syntaxe SQL Server pour sélectionner deux lignes de données et écraser les valeurs qui sont différentes de la première ligne
id, Name, LinkBackId, Param1, Param2, Param3
1, "Name1", NULL, 10, 20, 30
2, "Name2", NULL, 10, 20, 30
3, "Name3", 2, 14, NULL, NULL
Le LinkBackId est important ici parce que cela est associé à la id qui est également dans cette table. En regardant la ligne 3 LinkBackId contient 2 Je veux revenir la ligne de id = 0 et fusionner les valeurs de la ligne 3 dans le résultat comme celui-ci:
3, "Name3", 2, 10, 20, 30
Je traite les lignes qui contiennent NULL dans la LinkBackId comme une rangée "maître" de paramètres. Les lignes qui contiennent un linkbackid doivent être remplacées par les valeurs principales qui ne sont pas NULL.
Je me demande s'il existe une méthode élégante pour faire cela au lieu d'utiliser beaucoup d'instructions if.
Espérons que cela a du sens.
Merci
Quelle version de SQL Server travaillez-vous? Aussi, à quelle profondeur la recherche récursive doit-elle aller? Que faire si la ligne avec 'id = 2' avait' LinkBackId = 1'? – Welbog
[1] J'utilise SQL Server 2005. [2] La recherche récursive est toujours juste une profondeur. Les valeurs "master" ne doivent pas avoir de linkbackid (donc ils sont NULL ci-dessus). [3] La ligne principale (rangée = 1) gagne. Espérons que cela ait du sens – Belliez