代码之家  ›  专栏  ›  技术社区  ›  homam

SQL Server选择互异

  •  3
  • homam  · 技术社区  · 15 年前

    我想写一个这样的查询:

    对于具有这些列的表: Cola Colb Colc,冷

    先选择(可乐、可乐、可乐、冷饮) 独特(colb,colc) 从表 寒令

    查询应该按cold对表排序,然后按colb和colc的组合对结果进行分组(它们可能具有不同的数据类型),并返回组中的第一行(包含表中的所有列)。

    如何在MS SQL Server 2005中实现?

    1 回复  |  直到 15 年前
        1
  •  6
  •   Mark Byers    15 年前

    听起来你想要“每组最多”。

    一种方法是使用窗口功能 ROW_NUMBER 要对每组中的行进行编号,然后仅选择行号为1的行:

    SELECT ColA, ColB, ColC, ColD
    FROM
    (
        SELECT
             ColA, ColB, ColC, ColD,
             ROW_NUMBER(PARTITION BY ColB, ColC ORDER BY ColD) AS rn
        FROM table1
    ) T1
    WHERE rn = 1