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,