SQL将行组合成一个
问题描述:
我目前有两个表,我想一起查询。 一个用户可以看到文件编号,它通过fileID连接到第二个表。SQL将行组合成一个
第二张表由3列组成。 fileID是一个ID,它显示数据将要处于的字段的12个选项中的哪一个,以及每个对应字段中的数据。 对于每个字段类型,第二个表的每个fileID显示12次。我想结束查询返回一行中的所有行;文件编号,然后是每个12个字段的数据。
目前,当我查询返回每个文件的数量12米不同的行。有没有办法让所有相关信息获得1行?
当前查询:
SELECT DISTINCT t1.FileNumber
, CASE WHEN t2.typeID = 1 THEN t2.value END
, CASE WHEN t2.typeID = 2 THEN t2.value END
, CASE WHEN t2.typeID = 3 THEN t2.value END
, CASE WHEN t2.typeID = 4 THEN t2.value END
FROM t1
LEFT JOIN t2 ON t1.fileID = t2.fileID
ORDER BY t1.FileNumber
我没跟所有12种数据类型的经历,因为我是刚刚与4测试时,看到重复的行。
答
使用聚合:
SELECT t1.FileNumber,
MAX(CASE WHEN t2.typeID = 1 THEN t2.value END),
MAX(CASE WHEN t2.typeID = 2 THEN t2.value END),
MAX(CASE WHEN t2.typeID = 3 THEN t2.value END),
MAX(CASE WHEN t2.typeID = 4 THEN t2.value END)
FROM t1 LEFT JOIN
t2
ON t1.fileID = t2.fileID
GROUP BY t1.FileNumber
ORDER BY t1.FileNumber;
是。你目前的查询是什么?目前的结果是什么?期望的结果是什么?检查http://*.com/help/how-to-ask – Degan