我需要计算名称和事件名称可以拥有的ID的数量'接受'或者'拒绝'对于同一日期的值。如何编写案例陈述仅使用'接受'值?我已经尝试了很多方法,但仍然统计它们。仍然指望拒绝'记录。 非常感谢任何帮助。
以下示例:
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 ;
答案 0 :(得分:2)
听起来你想要条件聚合:
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;
答案 1 :(得分:0)
SELECT DISTINCT TH.HICN_CD,TH.NAME,TH.EVENTNAME,TM.MAX_DATE INTO #TEMP_ACCEPT 来自#TEMP_HICN TH LEFT JOIN #TEMP_MAXDATE TM ON TM.HICN_CD = TH.HICN_CD AND TM.MAX_DATE = TH.MAX_DATEID GROUP BY TH.MEDICARE_HICN_CD,TH.NAME,TH.EVENTNAME,TM.MAX_DATE;
SELECT DISTINCT TH.MEDICARE_HICN_CD,TH.NAME,TH.EVENTNAME,TM.MAX_DATE INTO #TEMP_REJECT 来自#TEMP_HICN TH LEFT JOIN #TEMP_MAXDATE TM ON TM.HICN_CD = TH.HICN_CD AND TM.MAX_DATE = TH.MAX_DATEID 在哪里TH.EVENTNAME ='拒绝' 和TH.HICN_CD + TH.NAME NOT IN(从#TEMP_ACCEPT中选择HICN_CD + NAME) GROUP BY TH.HICN_CD,TH.NAME,TH.EVENTNAME,TM.MAX_DATE;
SELECT * INTO #TEMP_EVENT 来自#TEMP_ACCEPT 联盟 选择 * 来自#TEMP_REJECT;
WITH EVENT_DUP AS( SELECT DISTINCT HICN_CD,NAME,COUNT()AS'EVENTS' 来自#TEMP_EVENT GROUP BY HICN_CD,NAME 有计数()> 1 ) 从#TEMP_EVENT删除 HICN_CD + NAME IN(SELECT HICN_CD + NAME FROM EVENT_DUP) AND MAX_DATE为空;
SELECT EV.NAME,EV.EVENTNAME,COUNT(DISTINCT EV.HICN_CD)AS HICN_COUNT 来自#TEMP_EVENT EV LEFT JOIN #TEMP_MAXDATE TM ON TM.HICN_CD = EV.HICN_CD GROUP BY EV.NAME,EV.EVENTNAME 按EV.NAME排序;