我有这个表填写如下http://sqlfiddle.com/#!2/3736a/4,我想做的是下一个:
我有来自 nom_agrupacion 列的 n 组名称(在本例中为 4 个组名称:CAFE NESCAFE、CAFE LEGAL、CAFE INTERNA、null),我需要先按 nom_agrupacion(组名称)对它们进行排序,然后再按其他列是科斯托。
这样做的查询是这样的
SELECT * FROM bby_venta_co WHERE promocion_id = 100000189
AND ti = 153
AND ffi = 12
AND ci = 1
ORDER BY nom_agrupacion DESC, costo DESC;
得到这个
ID  DTTI    TI     FFI  CI  PROMOCION_ID    CODIGO_BARRAS   COSTO   NOM_AGRUPACION
53  1101    153     12  1   100000189       7501001602727   34.55   CAFE NESCAFE
55  1102    153     12  1   100000189       7501001602727   34.55   CAFE NESCAFE
62  1107    153     12  1   100000189       7501059224841   19.45   CAFE NESCAFE
65  1108    153     12  1   100000189       17501052411115  28.3    CAFE LEGAL
66  1109    153     12  1   100000189       17501052411115  28.3    CAFE LEGAL
67  1110    153     12  1   100000189       7501052411118   24.8    CAFE LEGAL
57  1103    153     12  1   100000189       7501052411118   24.8    CAFE LEGAL
61  1106    153     12  1   100000189       17501052418732  55.6    CAFE INTERNA
52  1100    153     12  1   100000189       27501052418739  32.6    CAFE INTERNA
51  1099    153     12  1   100000189       27501052418739  32.6    CAFE INTERNA
60  1105    153     12  1   100000189       7501052418520   19.35   CAFE INTERNA
59  1104    153     12  1   100000189       7501000112388   12.9    (null)
68  1111    153     12  1   100000189       7501000112388   12.9    (null)
但是我需要对信息进行排序,这样我才能得到这个:带上每个组名的第一行(我有 4 个因为 null 也算作组)然后带上每个组的第二行,依此类推以获得类似的东西
ID  DTTI    TI     FFI  CI  PROMOCION_ID    CODIGO_BARRAS   COSTO   NOM_AGRUPACION
53  1101    153     12  1   100000189       7501001602727   34.55   CAFE NESCAFE
66  1109    153     12  1   100000189       17501052411115  28.3    CAFE LEGAL
61  1106    153     12  1   100000189       17501052418732  55.6    CAFE INTERNA
59  1104    153     12  1   100000189       7501000112388   12.9    (null)
55  1102    153     12  1   100000189       7501001602727   34.55   CAFE NESCAFE
65  1108    153     12  1   100000189       17501052411115  28.3    CAFE LEGAL
52  1100    153     12  1   100000189       27501052418739  32.6    CAFE INTERNA
68  1111    153     12  1   100000189       7501000112388   12.9    (null)    
62  1107    153     12  1   100000189       7501059224841   19.45   CAFE NESCAFE
57  1103    153     12  1   100000189       7501052411118   24.8    CAFE LEGAL
51  1099    153     12  1   100000189       27501052418739  32.6    CAFE INTERNA
60  1105    153     12  1   100000189       7501052418520   19.35   CAFE INTERNA
这甚至可以在一个查询中实现吗?
我试图至少将每个组的第一行带一次,但我的查询无法正常工作:
SELECT * FROM bby_venta_co WHERE promocion_id = 100000189
AND ti = 153
AND ffi = 12
AND ci = 1
GROUP BY  costo, nom_agrupacion
ORDER BY nom_agrupacion DESC, costo DESC;
我使用 group by 首先带来单个成本,然后带来单个 nom_agrupacion 但它似乎只读取成本,如果我只使用 group by nom_agrupacion 它不会给我带来具有最高值的列 costo 的行。
任何帮助将不胜感激。