查询使用GROUP BY多列

时间:2012-07-10 14:37:18

标签: sql sql-server group-by

我有一张满是患者/责任方/保险公司组合的表格(例如,患者Jim Doe的责任方是拥有保险公司Aetna Insurance的父母John Doe)。对于这些组合中的每一种,他们都有一份有多笔付款的合同。对于这个特定的表,我需要编写一个查询来查找在同一个月有多个合约日期的任何父/ RP /运营商组合。反正有吗?

示例表:

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或类似功能不确定是否可行。提前感谢任何建议!

1 个答案:

答案 0 :(得分: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

这将显示任何患者/责任方/保险公司/日历月组合,其中包含该月的多条记录。