2016-05-17 14 views
-3

この特定のクエリで私を助けてください。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つの列は、BatchRank、 あります。 logTypeのグループごとに、LogTypeグループが1,2,3,4,5,6であるべきである。 したがって、1つのグループごとに別のバッチがあり、最後の2つの列に配置する必要があります。

私はこれをどのように達成することができるのかをお手伝いしてください。

ありがとうございます。

+0

あなたのクエリから、 'batch'は、レコード内の実際の値です。しかし、異なるバッチ値で結果を得たいとします。 – ydoow

+0

サンプルデータ/テーブルを追加してください – Backs

+0

はい、1,2,3,4,5,6のバッチでグループ化してください。上記の私の例では 、 最初のバッチは1,5,6,2です。 (完了していなくても) 2番目のバッチは1,3,4,5,6,2です。 3番目の列を見て、それを基にしてください。 –

答えて

-1

あなただけのランクの順序を修正する必要があります...と:

rank() over (partition by logType 
      order by batch) rnk 
+0

いいえ、それは動作しませんでした。私は最後の2列が私が結果を望むものの答えでなければならないので、3列目に頼っているだけです。 –

+0

日付と時間で注文する必要があります。 –

+0

あなたの現在のコードは、LogDateTimeによって注文されます! –

関連する問題