我有这个表填写如下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 的行。
任何帮助将不胜感激。