0

TAB1 と TAB2 の 2 つのテーブルがあります。

TAB1 :

識別名
1 スプリアス
2 愛州
3 アルヴィ
4 ガニ

TAB2 :

IDデザイン
1A
1B
4B
4C
2A
3B
3B

DESIGN のカウントを取得しようとしています。次の出力が得られます。

NAME DESIGN カウント(DESIGN)
シュプリート A 1
シュプリート B 1
アイシュA 1
アルヴィ B 2
ガニB 1
ガニ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 カウント(DESIGN)
シュプリート A 1
シュプリート B 1
スプリアス C 0
アイシュA 1
アイシュB 0
アイシュ C 0
アルヴィ A 0
アルヴィ B 2
アルヴィ C 0
ガニ A 0
ガニB 1
ガニC 1



SQLクエリを使用してこれを達成する方法を教えてください。前もって感謝します

4

2 に答える 2

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

SQLフィドル

于 2013-07-17T09:24:29.150 に答える
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]

SQL フィドルのデモ

于 2013-07-17T09:32:02.597 に答える