Mam zestaw danych, który zawiera kolumny Date
, Cat
i QTY
. Co chcę zrobić, to dodać unikalną kolumnę, która liczy tylko unikalne wartości Cat
, gdy robi liczbę wierszy. To jest to, co chcę mój wynik zestaw wyglądać:row_number() Grupa według?
Za pomocą zapytania SQL poniżej, jestem w stanie uzyskać wiersz za pomocą funkcji row_number()
.
Jednak nie mogę uzyskać tej wyjątkowej kolumny, którą przedstawiłem powyżej. Dodanie grupy do klauzuli OVER
nie działa. Czy ktokolwiek ma jakieś pomysły, w jaki sposób mogę uzyskać tę unikalną kolumnę do liczenia?
SELECT
Date,
ROW_NUMBER() OVER (PARTITION BY Date ORDER By Date, Cat) as ROW,
Cat,
Qty
FROM SOURCE
Dzięki, to krok we właściwym kierunku. Jednak faktem jest, że mój aktualny zestaw danych nie jest zamówiony przez kota. Czy wiesz, jak to by działało w tym przykładzie? (Wyobraź sobie, że w mojej kolumnie cat DEF występuje przed ABC, ale prawdą jest, że wartości DEF są następujące po sobie w kolejności, więc nie powinieneś widzieć DEF, DEF, ABC, ABC, DEF jak wartości w kolumnie cat) – user1582928
@ user1582928 Jak za http://msdn.microsoft.com/en-us/library/ms173825.aspx " Określa kolejność, w jakiej funkcja DENSE_RANK jest stosowana do wierszy w partycji". I zawsze możesz dodać ORDER BY na końcu SELECT. –
prashanth
@ user1582928, jeśli chcesz, możesz określić funkcję zmiany kolejności, na przykład: zamówienie przez dekodowanie ("DEF", 1, "ABC", 2,3) –