SQL Server选择不同的

SQL Server选择不同的,sql,sql-server,join,group-by,distinct,Sql,Sql Server,Join,Group By,Distinct,我想写一个如下的查询: 对于包含以下列的表: 可乐 选择第一个(可乐、可乐、可乐、冷) 不同的(ColB,ColC) 从桌子上 冷订 查询应该按ColD对表进行排序,然后按ColB和ColC组合对结果进行分组(它们可能具有不同的数据类型),并返回组中的第一行(包括表中的所有列) 在MS SQL Server 2005中如何实现这一点?听起来您想要的是“每个组的最大值” 一种方法是使用窗口功能对每个组中的行进行编号,然后仅选择行编号为1的行: SELECT ColA, ColB, ColC, Co

我想写一个如下的查询:

对于包含以下列的表: 可乐

选择第一个(可乐、可乐、可乐、冷) 不同的(ColB,ColC) 从桌子上 冷订

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


在MS SQL Server 2005中如何实现这一点?

听起来您想要的是“每个组的最大值”

一种方法是使用窗口功能对每个组中的行进行编号,然后仅选择行编号为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

+1-我基本上是在打字。排名函数被低估了。;-)