我有一张像
这样的记录表这里我想要Id 4和7以及9
在这里我想要每个第二个(如果它有很多)记录的细节。在上表中我想获取Id
(4表示ticketid 1001),
(ticketid 1002为7)和
(9表示ticketid 1003)
对于ticketid 1003,它应该获取id 9,因为它没有其他id。
答案 0 :(得分:4)
使用sql-server 2005和更新版本,你可以使用这种方法:
WITH CTE AS
(
SELECT ID, Status, TicketID,
RN = ROW_NUMBER() OVER (PARTITION BY TicketID ORDER BY ID DESC),
CNT = COUNT(*) OVER (PARTITION BY TicketID)
FROM dbo.TableName t
)
SELECT ID, Status, TicketID
FROM CTE
WHERE CNT = 1 OR RN = 2
如果您不想使用类似于子查询/视图的common-table-expression:
SELECT x.ID, x.Status, x.TicketID
FROM ( SELECT ID, Status, TicketID,
RN = ROW_NUMBER() OVER (PARTITION BY TicketID ORDER BY ID DESC),
CNT = COUNT(*) OVER (PARTITION BY TicketID)
FROM dbo.TableName t ) x
WHERE x.CNT = 1 OR x.RN = 2
答案 1 :(得分:0)
尝试以下操作,
为您的表生成序列号,然后在where子句中应用条件。
即。派生列名称%2 = 0
的位置并请分享您的完整信息,这意味着您的数据是什么以及您从该输入中想要的内容。
所以我们会更清楚地解决您的问题并提供解决方案。
感谢。