繁体   English   中英

SQL Server 2008 case语句对记录进行计数,而不对具有相同日期但结果不同的另一条记录进行计数

[英]SQL Server 2008 case statement to count records and not another record with same date but different result

我需要计算ID和ID的数量,其中ID和Eventname在同一日期的值可以具有“接受”或“拒绝”。 我该如何写一个case语句仅使用'Accept'值? 我已经尝试了许多方法,但仍算在内。 仍会计算“拒绝”记录。 任何帮助是极大的赞赏。

下面的例子:

select th.NAME, 
       COUNT(distinct th.HICN_CD) AS HICN_COUNT, 
       case  th.EVENTNAME 
           when 'accept'  then 'Accept' 
           when 'reject'   then 'Reject' ELSE 'N/A'
       END AS Event_Name
from #temp_hicn th
left join #temp_maxdate tm
   on tm.HICN_CD = th.HICN_CD
group by th.NAME, 
         th.EVENTNAME
order by th.NAME ;

听起来您想要条件聚合:

select th.NAME, COUNT(distinct th.HICN_CD) AS HICN_COUNT , 
       sum(case th.EVENTNAME when 'accept' then 1 ELSE 0 END) AS NumAccept
from #temp_hicn th left join
     #temp_maxdate tm
     on tm.HICN_CD = th.HICN_CD
group by th.NAME
order by th.NAME;

如果要计算HICN_CD接受的不同值:

select th.NAME,
       COUNT(distinct case th.EVENTNAME when 'accept' then th.HICN_CD end) AS HICN_COUNT , 
       sum(case th.EVENTNAME when 'accept' then 1 ELSE 0 END) AS NumAccept
from #temp_hicn th left join
     #temp_maxdate tm
     on tm.HICN_CD = th.HICN_CD
group by th.NAME
order by th.NAME;

从#TEMP_HICN TH左联接#TEMP_MAXDATE TM ON TM.HICN_CD = TH.HICN_CD和TM.MAX_DATE = TH.MAX_DATEID GROUP BY TH.MEDICARE_HICN_CD中选择DISTINCT TH.HICN_CD,TH.NAME,TH.EVENTNAME,TM.MAX_DATE进入#TEMP_ACCEPT ,TH.NAME,TH.EVENTNAME,TM.MAX_DATE;

从#TEMP_HICN TH左联接#TEMP_MAXDATE TM ON TM.HICN_CD = TH.HICN_CD和TM.MAX_DATE = TH.MAX_DATEID THHER_EVENTNAME =的位置,从#TEMP_HICN中选择TH.MEDICARE_HICN_CD,TH.NAME,TH.EVENTNAME,TM.MAX_DATE到#TEMP_REJECT TH.HICN_CD,TH.NAME,TH.EVENTNAME,TM.MAX_DATE不在“ REJECT”和TH.HICN_CD + TH.NAME不在(从#TEMP_ACCEPT选择HICN_CD +名称)组中;

SELECT * INTO #TEMP_EVENT FROM #TEMP_ACCEPT UNION SELECT * FROM #TEMP_REJECT;

使用EVENT_DUP AS(选择DISTINCT HICN_CD,名称,COUNT( )作为HICN_CD中来自#TEMP_EVENT GROUP的“事件”,名称具有COUNT( )> 1)从#TEMP_EVENT中删除HICN_CD +名称输入(选择HICN_CD +名称和事件) MAX_DATE IS NULL;

从#TEMP_EVENT EV LEFT JOIN #TEMP_MAXDATE TM ON TM.HICN_CD = EV.HICN_CD GROUP BY EV.NAME选择EV.NAME,EV.EVENTNAME,COUNT(DISTINCT EV.HICN_CD)作为HICN_COUNT;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM