我需要一些SQL Server方面的帮助
我有许多表格行,如下所示。
ID Name status
1 viral/AHD Yes
2 viral/AHD No
3 joe/US Yes
4 thomas/IND Yes
5 jack/IND No 现在我想选择那些在Name列中不同的行,即第3、4、5行,以及那些在Name中重复但status为Yes的行。
所以我的最终答案是:
ID Name Status
1 viral/AHD Yes
3 joe/US Yes
4 thomas/IND Yes
5 jack/IND No 发布于 2012-05-09 19:10:20
如果您使用的是sql 2005+。那么这可能会有帮助:
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY Name
ORDER BY
(CASE WHEN status='Yes' THEN 0 ELSE 1 END)) AS RowNbr,
Table1.*
FROM
Table1
)
SELECT
*
FROM
CTE
WHERE
CTE.RowNbr=1编辑
或者更简单。如下所示:
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY Name
ORDER BY status DESC) AS RowNbr,
Table1.*
FROM
Table1
)
SELECT
*
FROM
CTE
WHERE
CTE.RowNbr=1有用的参考资料:
https://stackoverflow.com/questions/10514824
复制相似问题