我有一个可以正常工作的查询。但是,在id2列下返回相同int值的查询有问题。我只需要帮助获取一个值的实例,而忽略另一个实例。基本上抓取一个独特的id2。任何帮助都将不胜感激。还有,如果你需要澄清的话,请告诉我。
SELECT [id],[id1]
,[id2]
,[name]
,[date]
,[user]
FROM [MyDatabase.table]
Where [date]>= dateadd(day,datediff(day,0,getdate()),-5)
ORDER BY [cid]编辑1:
id1 id2 name time user
6466 171477 item1 2012-10-10 07:08:48.000 user1
6469 171477 item1 2012-10-10 07:11:01.000 user1
6468 171477 item1 2012-10-10 07:10:37.000 user1
6465 171477 item1 2012-10-10 07:07:43.000 user1
6464 171477 item1 2012-10-10 07:06:58.000 user1
6467 171477 item1 2012-10-10 07:09:35.000 user1
6474 173026 item2 2012-10-10 10:20:21.000 user2
6478 173297 item3 2012-10-10 11:31:55.000 user3
6472 175445 item4 2012-10-10 07:18:17.000 user1
6460 175977 item5 2012-10-08 07:42:39.000 user4
6473 176253 item6 2012-10-10 10:18:21.000 user2
6471 176253 item6 2012-10-10 10:15:03.000 user2
6470 176253 item6 2012-10-10 10:14:34.000 user2应:
id1 id2 name time user
6466 171477 item1 2012-10-10 07:08:48.000 user1
6474 173026 item2 2012-10-10 10:20:21.000 user2
6478 173297 item3 2012-10-10 11:31:55.000 user3
6472 175445 item4 2012-10-10 07:18:17.000 user1
6460 175977 item5 2012-10-08 07:42:39.000 user4
6473 176253 item6 2012-10-10 10:18:21.000 user2发布于 2012-10-11 17:21:42
;WITH tbl_online AS (
SELECT [id],[r_id]
,[cid]
,[name]
,[date]
,[user] ,ROW_NUMBER () OVER (
PARTITION BY [cid] ORDER BY [cid] ) AS Rnum
FROM [MyDatabase.table]
Where [date]>= dateadd(day,datediff(day,0,getdate()),-5) )
SELECT * FROM tbl_online WHERE Rnum !>1
ORDER BY [cid]发布于 2012-10-11 17:21:07
您可能需要根据选择返回哪一行的方式来调整下面的ORDER BY部件。
WITH cteRowNum AS (
SELECT id1, id2, name, time, user,
ROW_NUMBER() OVER(PARTITION BY id2 ORDER BY time) AS RowNum
FROM MyDatabase.Table
)
SELECT id1, id2, name, time, user
FROM cteRowNum
WHERE RowNum = 1;发布于 2012-10-11 17:21:12
您似乎在寻找给定列表的最早记录(id2,名称),下面的查询将检索它们:
SELECT a.*
FROM
YourTable a
JOIN
(
SELECT MIN(id1) as id1, id2, name FROM YourTable GROUP BY id2, name
) as b
ON a.id1 = b.id1https://stackoverflow.com/questions/12844796
复制相似问题