请帮我这个具体的查询。SQL Server SELECT排名()和数据分组
这里是我的示例查询
with cte as
(
select entryID,LogDateTime,logtype[logtype],batch,
rank() over (partition by logType
order by logdatetime) rnk
from Emp_TimeLog
where cast(LogDateTime as date) = '2016-05-17'
) select entryID,LogDateTime,logType,batch, rnk
from cte order by LogDateTime
这导致这样
2016-05-17 11:57:44.000 1 1 1
2016-05-17 11:57:53.000 5 1 1
2016-05-17 11:57:58.000 6 1 1
2016-05-17 11:58:10.000 2 1 1
2016-05-17 11:58:18.000 1 2 2
2016-05-17 11:58:25.000 3 1 1
2016-05-17 11:58:32.000 4 1 1
2016-05-17 11:58:42.000 5 2 2
2016-05-17 11:58:49.000 6 2 2
2016-05-17 11:58:55.000 2 2 2
但我想是这样的。
2016-05-17 11:57:44.000 1 1 1
2016-05-17 11:57:53.000 5 1 1
2016-05-17 11:57:58.000 6 1 1
2016-05-17 11:58:10.000 2 1 1
2016-05-17 11:58:18.000 1 2 2
2016-05-17 11:58:25.000 3 2 2
2016-05-17 11:58:32.000 4 2 2
2016-05-17 11:58:42.000 5 2 2
2016-05-17 11:58:49.000 6 2 2
2016-05-17 11:58:55.000 2 2 2
最后2列是Batch
和Rank
, 而第三列是logType
。 它应该是按批次logType
其中LogType
组是1,2,3,4,5,6。 因此,对于每1个组,它是另一批次,我需要将它放在最后2列。
请帮助这一点,我怎么能做到这一点。
在此先感谢。
从查询,'batch'是一个创纪录的实际值。但是你希望得到具有不同'批量'值的结果。 – ydoow
请加样本数据/表 – Backs
是的,我应该按照1,2,3,4,5,6批次进行分组。 在我上面的例子中, 第一批应该是1,5,6,2。 (即使不完整) 第二批应该是1,3,4,5,6,2。 我应该看看并基于第3列。 请帮忙 –