这是我的问题的简化版本。
我有如下表
Id Name SNumber
100 XYZ 123
100 XYZ 123
101 ABC 123
103 QAZ 123
100 XYZ 971
100 XYZ 872
100 XYZ 659
102 PQR 145
102 PQR 707
103 QAZ 421
我想将 Snumber 的行数为“123”,即Total列,Snumber 的行数不为“123”,即otherTotal列
Id Name Total OtherTotal
100 XYZ 2 3
101 ABC 1 0
102 PQR 0 2
103 QAZ 1 1
我正在做的是使用加入
Select xx.*,otherTotal
From
( Select Id,Name,count(*) as Total
From table
Where Snumber like '123'
Group By id,name
)xx
Inner join
( Select Id,Name,count(*) as otherTotal
From table
Where Snumber not like '123'
Group By id,name
)yy
On xx.Id=yy.Id
但这只会在特定Id
同时具有Snumber
as123
和 not as 的情况下返回行123
返回的数据如下
Id Name Total OtherTotal
100 XYZ 2 3
103 QAZ 1 1
现在无法保证特定 ID 的 Snumber 始终为 123,因此我不能使用左连接或右连接。如何解决这个泥潭?傻傻的