私はこのテーブルを次のように埋めました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)
しかし、これを取得できるように情報を並べ替える必要があります。すべてのグループ名の最初の行を取得し (グループとして null カウントもあるために 4 つ取得しました)、次にすべてのグループの 2 番目の行などを取得して、このようなものを取得します。
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
これは1つのクエリでも可能ですか?
少なくともすべてのグループの最初の行を 1 回取得しようとしましたが、クエリが正しく機能しません。
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 の行が表示されません。
どんな助けでも感謝します。