sql - 使用 GROUP BY 多列的查询

标签 sql sql-server group-by

我的 table 上摆满了患者/责任方/保险公司组合(例如,患者 Jim Doe 的责任方是 parent John Doe,他拥有保险公司 Aetna Insurance)。对于每种组合,他们都有一份包含多次付款的契约(Contract)。对于这个特定的表,我需要编写一个查询来查找在同一个月内具有多个契约(Contract)日期的任何母公司/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或类似函数是否可以实现这一点。预先感谢您的任何建议!

最佳答案

如果您只关心同一日历月中的多个条目:

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

这将向您显示任何患者/责任方/保险公司/日历月组合,该月有多个记录。

关于sql - 使用 GROUP BY 多列的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11415726/

相关文章:

sql - 如何在 SQL Server 中使用单个 ALTER TABLE 语句删除多个列?

sql-server - 访问未声明的变量

MySQL 双左连接、条件 OR 和组

MySQLi GROUP BY Column1(当 Column1 = X 时为 Column2)

mysql - SQL 仅选择一项

sql - PostgreSQL 根据模式将单列值拆分为多列

SQL 在重复键违规后继续执行查询

sql 在一个表上多次插入,同时在另一个表上循环/迭代?

c# - 外键应该以哪种方式进入一对一关系

python - pandas,按函数分组后的列名称