価格を階層化した商品価格のリストがあります。階層レベルは、クラスタ,およびシェルフです。複数の階層レベルで値を持つ行を並べ替える
私は階層的にこれらの製品価格をソートしたいと思います。各レベルをソートする必要があります。ここでは期待された結果の一例である:
今、私は棚のレベルではなく、まだ店またはクラスタレベルでの価格を並べ替えることができます。
SELECT cluster_id, store_id, shelf_id, price FROM (
SELECT * FROM (
SELECT p.*,
ROW_NUMBER() OVER (
ORDER BY
cluster_id ASC NULLS FIRST,
store_id ASC NULLS FIRST,
price DESC
) AS rn
FROM (SELECT * FROM products) p
)
)
ORDER BY rn;
私の実際の結果は次のとおりです。
私はOracle Database 12cを使用しています。
サンプル・データ
CREATE TABLE products (
cluster_id VARCHAR2(30),
store_id VARCHAR2(30),
shelf_id VARCHAR2(40),
price NUMBER(*,2)
);
INSERT INTO products VALUES ('10','230',NULL,120);
INSERT INTO products VALUES (NULL,NULL,NULL,500);
INSERT INTO products VALUES ('10','230','967',40);
INSERT INTO products VALUES ('10',NULL,NULL,300);
INSERT INTO products VALUES ('50','430','863',50);
INSERT INTO products VALUES ('50','170',NULL,70);
INSERT INTO products VALUES ('10','500','783',100);
INSERT INTO products VALUES ('50','170','798',20);
INSERT INTO products VALUES ('50','480',NULL,80);
INSERT INTO products VALUES ('50','430',NULL,50);
INSERT INTO products VALUES ('10','500',NULL,180);
INSERT INTO products VALUES ('50','480','486',60);
INSERT INTO products VALUES ('10','230','296',80);
INSERT INTO products VALUES ('50',NULL,NULL,200);
INSERT INTO products VALUES ('10','500','344',80);
INSERT INTO products VALUES ('50','480','234',20);
INSERT INTO products VALUES ('50','170','368',50);
あなたのクエリがない作品、それ価格によるソートすべてのクラスタ、価格などによって、すべてのカップルのクラスタ/ストアを行います... –