0
我想在3個表來算幾個項目:伯爵獨有的3排連接表
- 「總」 - 總Serialnumbers在一個批次(批號爲SERIALNUMBER的3個第一位數)
- 「Call_Per_Code」 - 與每批
- 「NoCall」一個callnr計數唯一代碼 - 計數唯一代碼沒有callnr每批
樣本數據如下:
Table Test1
CallNr CallType
1 rej
2 rej
3 rej
4 rej
5 QC
6 QC
7 rej
8 rej
Table Test2
CallNr Code
1 201401
3 201402
4 201404
5 201401
7 201401
8 201401
Table Test3
Code PartCode SerialNumber
201401 68001 123-01
201402 68001 123-02
201403 68001 123-03
201404 68001 124-01
201405 68001 124-02
201406 68001 124-03
的結果必然是:
Batch Total NoCall Call_Per_Code
123 3 1 2
124 3 2 1
但我得到的結果是:
Batch Total NoCall Call_Per_Code
123 3 1 4
124 2 1 1
我使用的是SQL Server 2012中的SQL代碼:
SELECT
substring(T3.SerialNumber,1,3) as batch
,COUNT(DISTINCT concat(T3.code,substring(T3.SerialNumber,1,3))) as Total
,sum(case when T2.CallNr is null then 1 else 0 end) as NoCall
,sum(case when T2.CallNr is null then 0 else 1 end) as Call_per_Code
FROM Test1 T1
INNER JOIN Test2 T2
ON T1.CallNr=T2.CallNr AND T1.CallType='rej'
RIGHT JOIN Test3 T3
ON T2.Code=T3.Code
GROUP BY substring(T3.SerialNumber,1,3)
我如何獲得Call_Per_Code列的正確計數。用CallNr代碼201401被算作如果從Test3的開始的3改爲1,