我有两张桌子TAB1和TAB2
TAB1:
ID NAME 1 Supreeth 2 Aishu 3 Arvi 4 Gani
TAB2:
ID DESIGN 1 A 1 B 4 B 4 C 2 A 3 B 3 B
我试图获得设计的数量,我得到以下输出
NAME DESIGN Count(DESIGN) Supreeth A 1 Supreeth B 1 Aishu A 1 Arvi B 2 Gani B 1 Gani C 1
我正在尝试的查询是
SELECT TAB1.NAME,TAB2.DESIGN, COUNT(DESIGN)
FROM TAB1 , TAB2
WHERE TAB1.ID=TAB2.ID
GROUP BY TAB1.NAME,TAB2.DESIGN,TAB1.ID
ORDER BY TAB1.ID
但我正在寻找输出
NAME DESIGN Count(DESIGN) Supreeth A 1 Supreeth B 1 Supreeth C 0 Aishu A 1 Aishu B 0 Aishu C 0 Arvi A 0 Arvi B 2 Arvi C 0 Gani A 0 Gani B 1 Gani C 1
请告诉我如何使用SQL查询实现此目的。提前致谢
答案 0 :(得分:3)
试试这个:
SELECT
TAB1.ID,
TAB1.NAME,TAB2.DESIGN,
SUM(CASE WHEN TAB1.ID=TAB2.ID THEN 1 ELSE 0 END) as count
FROM
TAB1 CROSS JOIN TAB2
GROUP BY
TAB1.ID,TAB1.NAME,TAB2.DESIGN
ORDER BY
TAB1.ID
<强> SQLFiddle 强>
答案 1 :(得分:0)
试试这个
SELECT T1.[ID], T1.[NAME],T2.[DESIGN],
(
SELECT COUNT([DESIGN]) FROM TAB2 TT2 WHERE TT2.ID=T1.ID AND TT2.[DESIGN] = T2.[DESIGN]
) AS CNT
FROM TAB1 T1
CROSS JOIN
(
SELECT [DESIGN] FROM TAB2 GROUP BY [DESIGN]
) T2
ORDER BY T1.[NAME],T2.[DESIGN]