我有一个临时表#temp1
基本上有一个特定表的转储
Create Table #temp
([CaseSeveranceID] [int] ,
[OldCaseNbr] nvarchar(12) ,
[OldCDI] [int] ,
[NewCaseNbr] nvarchar(12),
[NewCDI] [int],
)
Insert into #temp
Select * from CSS where .....
我有另一张表cst
,它基本上具有
css.caseSeveranceID = cst.CaseSeveranceID
此表格cst
有一列Processed
,其值可能为“是”或“否”。目标是找出caseSeveranceID
中每个#temp
Processed = 'yes'
的行数CaseSeveranceID
以及找到的每个#temp
的总行数。
示例:1002,1005,1008
表CST
在表 CSTId = 101
CaseSEveranceID = 1002
Processed = 'Yes'
CSTId = 102
CaseSEveranceID = 1002
Processed = 'Yes'
CSTId = 103
CaseSEveranceID = 1002
Processed = 'No'
中,我们可以
ProcessCount
同样适用于其他记录。我最终需要#temp表,列名CaseSeveraneID 1002
以及现有列,2/3
的值为{{1}}(nbr是/总数) )。
最好的方法是什么?如果您需要任何澄清或更多信息,请告诉我。
答案 0 :(得分:1)
未经测试但应该是这样的:
SELECT a.CSTId, sum(CASE WHEN Processed = 'Yes' THEN 1 ELSE 0 END) as num_yes, count(cst_id) as num_total
FROM #temp a
INNER JOIN cst b ON a.caseSeveranceID = b.CaseSeveranceID
GROUP BY a.CSTId
答案 1 :(得分:0)
select CaseSeveranceID,
sum((case Processed when 'Yes' then 1 else 0 end)) as processed,
count(1) as totalCount
from cst
group by CaseSeveranceID