zza*_*ndy 2 sql sql-server sql-server-2005
所以我有一个表有三列- col1,col2和col3.我需要选择那些col1共享行的值,只有一个col2和的组合col3.在理想的世界里,我会这样写:
SELECT col1 FROM table
GROUP BY col1
HAVING COUNT(DISTINCT(col2, col3)) = 1
如何在现实世界中做到这一点?
到目前为止,我有两个解决方案-通过组col1和col2和col1和col3他们加入的结果; 或者按所有三个分组,然后分组col1.不幸的是,我得到(非常)不同的数量.
该数据库位于SQL Server 2005上.
SELECT col1
FROM table
GROUP BY col1
HAVING MAX(col2) = MIN(col2) AND MAX(col3) = MIN(col3)
更复杂:
SELECT col1
FROM
    (
    SELECT
        col1, 
        ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2, col3) as rn
    FROM table
    ) T
GROUP BY col1
HAVING MAX(rn) = 1
| 归档时间: | 
 | 
| 查看次数: | 6701 次 | 
| 最近记录: |