我需要帮助来创建一个以特定格式输出数据的SQL查询。
假设我有两个表,数据如下所示:
表1:
Name
A
B
C
表2:
Name Address Category
A 123 One St. Type1
A 123 One St. Type1
A 123 One St. Type1
A 123 One St. Type2
B 222 Two St. Type2
B 222 Two St. Type2
C 77 Three St. Type1
C 77 Three St. Type3
C 77 Three St. Type3
我需要以以下格式生成输出:
Name Address Type1 Type2 Type3
A 123 One St. TRUE TRUE FALSE
B 222 Two St. FALSE TRUE FALSE
C 77 Three St. TRUE FALSE TRUE
我似乎无法弄清楚。任何帮助将不胜感激!
我的尝试只有一部分:
select t1.Name, Category="Type1" as Type1, Category="Type2" as Type2,
Category="Type3" as Type3
from Table2 t1
order by Name
这远没有达到目标。
答案 0 :(得分:0)
似乎您正在寻找条件聚合和内部联接。
SELECT t2.name,
t2.address,
CASE
WHEN count(CASE t2.category
WHEN 'Type1' THEN
1
END) > 0 THEN
'TRUE'
ELSE
'FALSE'
END type1,
CASE
WHEN count(CASE t2.category
WHEN 'Type2' THEN
1
END) > 0 THEN
'TRUE'
ELSE
'FALSE'
END type2,
CASE
WHEN count(CASE t2.category
WHEN 'Type3' THEN
1
END) > 0 THEN
'TRUE'
ELSE
'FALSE'
END type3
FROM table1 t1
INNER JOIN table2 t2
ON t2.name = t1.name
GROUP BY t2.name,
t2.address;