48

Date列、Cat、およびを含むデータ セットがありますQTY。私がしたいCatのは、行カウントを行うときに一意の値のみをカウントする一意の列を追加することです。これは、結果セットを次のように表示したいものです。

ここに画像の説明を入力

以下の SQL クエリを使用すると、row_number()関数を使用して行を取得できます。

ただし、上に示した一意の列を取得できません。group by を句に追加すると、OVER機能しません。この一意のカウント列を機能させる方法について、誰かアイデアはありますか?

SELECT 
   Date,    
   ROW_NUMBER() OVER (PARTITION BY Date ORDER By Date, Cat) as ROW,
   Cat,
   Qty
FROM SOURCE
4

2 に答える 2

49

これが解決策です。

Cat の順序について心配する必要はありません。次の SQL を使用すると、日付と猫の組み合わせに対して一意の値を取得できます。

SELECT 
   Date,    
   ROW_NUMBER() OVER (PARTITION BY Date, Cat ORDER By Date, Cat) as ROW,
   Cat,
   Qty
FROM SOURCE
于 2012-09-21T10:42:05.180 に答える
18
DENSE_RANK() OVER (PARTITION BY date ORDER BY cat)
于 2012-09-20T18:35:20.950 に答える