この特定のクエリで私を助けてください。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
3列はlogType
である最後の2つの列は、Batch
とRank
、 あります。 logType
のグループごとに、LogType
グループが1,2,3,4,5,6であるべきである。 したがって、1つのグループごとに別のバッチがあり、最後の2つの列に配置する必要があります。
私はこれをどのように達成することができるのかをお手伝いしてください。
ありがとうございます。
あなたのクエリから、 'batch'は、レコード内の実際の値です。しかし、異なるバッチ値で結果を得たいとします。 – ydoow
サンプルデータ/テーブルを追加してください – Backs
はい、1,2,3,4,5,6のバッチでグループ化してください。上記の私の例では 、 最初のバッチは1,5,6,2です。 (完了していなくても) 2番目のバッチは1,3,4,5,6,2です。 3番目の列を見て、それを基にしてください。 –