来自几个临时表的数据将合并到一个临时表中

时间:2014-05-30 18:37:19

标签: sql sql-server tsql

我有一个临时表#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,1008CST

中的CaseSeveranceID

在表 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是/总数) )。

最好的方法是什么?如果您需要任何澄清或更多信息,请告诉我。

2 个答案:

答案 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