3

从下表中,如果 Project.Date 组有失败和成功,我想保留失败行,但如果是单行(与其他行一样),则无论状态如何,都保留该行。例如,我想保留第一行,丢弃第二行并将其余的保留在下表中。

╔═════════╦══════════╦═════════╗
║ PROJECT ║   DATE   ║ STATUS  ║
╠═════════╬══════════╬═════════╣
║ HLM     ║ 20130422 ║ Fail    ║
║ HLM     ║ 20130422 ║ Success ║
║ HLM     ║ 20130423 ║ Fail    ║
║ HLM     ║ 20130424 ║ Success ║
║ HLM     ║ 20130425 ║ Fail    ║
║ HLM     ║ 20130426 ║ Success ║
╚═════════╩══════════╩═════════╝
4

1 回答 1

2
WITH records
AS
(
    SELECT  [Project], [Date], [Status],
            ROW_NUMBER() OVER (PARTITION BY [Project], [Date]
                                ORDER BY [Status]) rn
    FROM    TableName
)
SELECT  [Project], [Date], [Status]
FROM    records
WHERE   rn = 1

输出

╔═════════╦══════════╦═════════╗
║ PROJECT ║   DATE   ║ STATUS  ║
╠═════════╬══════════╬═════════╣
║ HLM     ║ 20130422 ║ Fail    ║
║ HLM     ║ 20130423 ║ Fail    ║
║ HLM     ║ 20130424 ║ Success ║
║ HLM     ║ 20130425 ║ Fail    ║
║ HLM     ║ 20130426 ║ Success ║
╚═════════╩══════════╩═════════╝
于 2013-04-28T16:34:50.930 回答