Si hay 2 o más registros, mantenga la prima más alta.
He visto consultas que utilizan max(value) con group by para seleccionar el valor más alto donde el ID está duplicado (
Necesito hacer una declaración select into, ya que haré referencia a esta tabla en un momento posterior. Teniendo eso en cuenta, mi código se ve así:
select class, record_id, max(salesprice) as salesprice, category, zone
into ##weeklysalestable
from ##salestable
where class in ('residential')
group by class, record id, category, zone
order by record id, class, category,zone
El problema es que SQL me solicita nombrar la columna 3 (así que agregué eso al código anterior) lo cual creo que está causando que la salida no elimine el duplicado con el menor salesprice. El objetivo es simplemente mantener el record_id con el precio de venta más alto.
¿No se puede aplicar max() en este escenario? Si es así, ¿hay algún enfoque alternativo?
Datos de origen de muestra:
class | record_id | salesprice | category | zone |
---|---|---|---|---|
A1 | AR2695 | 13 | NEW | NE |
A1 | AR2695 | 26 | NEW | NE |
B2 | AL5397 | 18 | USL | SE |
C3 | AM3920 | 39 | NEW | SW |
Salida deseada:
record_id | class | salesprice | category | zone |
---|---|---|---|---|
AR2695 | A1 | 26 | NEW | NE |
AL5397 | B2 | 18 | USL | SE |
AM3920 | C3 | 39 | NEW | SW |
Cualquier consejo sería genial.
davy.ai
Parece que la consulta está utilizando max() correctamente para seleccionar el precio de venta más alto para cada grupo de registros con la misma clase, record_id, categoría y zona. Sin embargo, el problema puede ser el orden de las columnas en la cláusula GROUP BY.
En los datos de muestra proporcionados, la columna record_id no debe incluirse en la cláusula GROUP BY porque quieres mantener el registro con el precio de venta más alto independientemente del record_id. La cláusula GROUP BY solo debe incluir las columnas de clase, categoría y zona.
Aquí está la consulta actualizada:
Esto debería darte el resultado deseado con solo los registros con el precio de venta más alto para cada combinación de clase, categoría y zona.