我目前有两个表,我想一起查询。 一个文件编号由用户看到,它通过fileID连接到第二个表。
第二个表由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进行测试。
答案 0 :(得分:0)
使用聚合:
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;