2012-07-10 49 views
4

我有一张满载患者/责任方/保险公司组合的表格(例如,患者Jim Doe的责任方是拥有保险承运商Aetna Insurance的父母John Doe)。对于这些组合中的每一种,他们都有一个有多次付款的合同。对于这个特定的表,我需要编写一个查询来查找在同一个月内有多个合同日期的任何父/ RP /运营商组合。无论如何要做到这一点?查询使用GROUP BY多列

实施例的表:

ContPat | ContResp | ContIns | ContDue 
------------------------------------------------------ 
53  | 13  | 27  | 2012-01-01 00:00:00.000 
53  | 13  | 27  | 2012-02-01 00:00:00.000 
53  | 15  | 27  | 2012-03-01 00:00:00.000 
12  | 15  | 3  | 2011-05-01 00:00:00.000 
12  | 15  | 3  | 2011-05-01 00:00:00.000 
12  | 15  | 3  | 2011-06-01 00:00:00.000 
12  | 15  | 3  | 2011-07-01 00:00:00.000 
12  | 15  | 3  | 2011-08-01 00:00:00.000 
12  | 15  | 3  | 2011-09-01 00:00:00.000 

在本例中,我想生成的任何患者/ RP /载波组合所有重复月份的列表。 12/15/3组合将是这里返回的唯一一行,但我正在处理数千种组合。

不确定这是可能的使用GROUP BY或类似的功能。预先感谢您的任何建议!

回答

9

如果你所关心的是在同一个日历月多个条目:

SELECT 
    ContPat, 
    ContResp, 
    ContIns, 
    MONTH(ContDue) as Mo, 
    YEAR(ContDue) as Yr, 
    COUNT(*) as 'Records' 
FROM 
    MyTable 
GROUP BY 
    ContPat, 
    ContResp, 
    ContIns, 
    MONTH(ContDue), 
    YEAR(ContDue) 
HAVING 
    COUNT(*) > 1 

这将告诉你任何患者/责任方/保险/日历月与当月多个记录相结合。

+0

我看到你还添加了YEAR行。非常感谢。完美工作! – JamieHoward 2012-07-10 15:03:48

+0

@blackairplane这是我最初的疏忽。如果没有“年”,它会统计每年的三月。 – JNK 2012-07-10 15:04:51

+0

我正在寻找'HAVING'! – Irfan 2017-10-05 13:52:06