Problème :
Considérons une table avec les données suivantes :
FK | Field1 | Field2 |
---|---|---|
3 | ABC | NULL |
3 | NULL | DEF |
L'objectif est de récupérer une ligne fusionnée du tableau, où les valeurs Field1 et Field2 sont combinées pour le même FK :
FK | Field1 | Field2 |
---|---|---|
3 | ABC | DEF |
Solution :
Pour obtenir ce résultat, des fonctions d'agrégation peuvent être utilisées. Les fonctions d'agrégation ignorent les valeurs NULL, permettant la fusion de valeurs non NULL. Par exemple, la requête suivante (testée dans SQL Server Express 2008 R2) peut être utilisée :
SELECT FK, MAX(Field1) AS Field1, MAX(Field2) AS Field2 FROM table1 GROUP BY FK;
La fonction MAX permet de sélectionner une valeur parmi les lignes regroupées par FK. Toute fonction d'agrégation qui récupère une valeur unique dans les lignes groupées peut être utilisée.
Exemples de données et de résultats :
Considérez les exemples de données suivants :
CREATE TABLE table1 (FK int, Field1 varchar(10), Field2 varchar(10)); INSERT INTO table1 VALUES (3, 'ABC', NULL); INSERT INTO table1 VALUES (3, NULL, 'DEF'); INSERT INTO table1 VALUES (4, 'GHI', NULL); INSERT INTO table1 VALUES (4, 'JKL', 'MNO'); INSERT INTO table1 VALUES (4, NULL, 'PQR');
L'exécution de la requête sur cet exemple de données donne le résultat suivant :
FK Field1 Field2 -- ------ ------ 3 ABC DEF 4 JKL PQR
Ainsi, le les lignes sont effectivement fusionnées, combinant des valeurs non NULL pour le même FK dans les colonnes Field1 et Field2.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!