Tengo un conjunto de datos que contiene las columnas Date
, Cat
y QTY
. Lo que quiero hacer es agregar una columna única que solo cuente los valores únicos Cat
cuando haga el recuento de filas. Esto es lo que yo quiero que mi conjunto de resultados para que parezca:row_number() Agrupar por?
Mediante el uso de la consulta SQL a continuación, soy capaz de conseguir fila usando la función row_number()
.
Sin embargo, no puedo obtener esa única columna que he descrito anteriormente. Cuando agrego group by a la cláusula OVER
, no funciona. ¿Alguien tiene alguna idea de cómo puedo hacer que funcione esta columna de recuento única?
SELECT
Date,
ROW_NUMBER() OVER (PARTITION BY Date ORDER By Date, Cat) as ROW,
Cat,
Qty
FROM SOURCE
Gracias, este es un paso en la dirección correcta. Sin embargo, el hecho es que mi conjunto de datos reales no está ordenado por cat. ¿Sabes cómo funcionaría en ese ejemplo? (Imagine que en mi columna cat, DEF aparece antes que ABC. Pero es cierto que los valores de DEF son consecutivos en mi orden, por lo que no verá DEF, DEF, ABC, ABC, DEF como valores en la columna cat) – user1582928
@ user1582928 As por http://msdn.microsoft.com/en-us/library/ms173825.aspx " Determina el orden en que se aplica la función DENSE_RANK a las filas de una partición". Y siempre puede agregar ORDER BY al final de SELECT. –
prashanth
@ user1582928, si lo desea, puede especificar una función para cambiar el orden, por ejemplo: ordenar por decodificación ('DEF', 1, 'ABC', 2,3) –