【发布时间】:2017-12-22 07:46:08
【问题描述】:
我有一个这样定义的发货表(该表存储在 HANA 数据库中,如果相关):
CREATE COLUMN TABLE SHIPMENTS (
ShipmentID INT PRIMARY KEY,
Received INT,
Facility NVARCHAR(10),
Item NVARCHAR(20)
);
这里,'Received' 列表示收到每批货物的时间点,Facility 是接收货物的地点,Item 是货物的内容。
我已经用这样的数据填充了它:
INSERT INTO SHIPMENTS VALUES (1, 0, 'Factory', 'Production machine');
INSERT INTO SHIPMENTS VALUES (2, 0, 'Office', 'Printer');
INSERT INTO SHIPMENTS VALUES (3, 0, 'Factory', 'Coffee maker');
INSERT INTO SHIPMENTS VALUES (4, 1, 'Office', 'Coffee maker');
INSERT INTO SHIPMENTS VALUES (5, 1, 'Factory', 'Fax Machine');
INSERT INTO SHIPMENTS VALUES (6, 2, 'Office', 'Computers');
INSERT INTO SHIPMENTS VALUES (7, 2, 'Factory', 'Fridge');
INSERT INTO SHIPMENTS VALUES (8, 2, 'Factory', 'Freezer');
INSERT INTO SHIPMENTS VALUES (9, 2, 'Office', 'Fax Machine');
我想查询数据库以查找在每个时间点到该时间点已收到哪些项目。根据另一个线程的回答,我首先这样做:
SELECT Facility, Received, STRING_AGG (Item, ';') as Items
FROM (
SELECT * FROM SHIPMENTS
ORDER BY Facility, Received
)
GROUP BY Facility, Received
ORDER BY Facility, Received;
导致
| FACILITY | RECEIVED | ITEMS
---------------------------------------------------------
1 | Factory | 0 | Production Machine;Coffee maker
2 | Factory | 1 | Fax Machine
3 | Factory | 2 | Fridge;Freezer
4 | Office | 0 | Printer
5 | Office | 1 | Coffee maker
6 | Office | 2 | Computers;Fax Machine
不过,我想要这个
| FACILITY | RECEIVED | ITEMS
---------------------------------------------------------
1 | Factory | 0 | Production Machine;Coffee maker
2 | Factory | 1 | Production Machine;Coffee maker;Fax Machine
3 | Factory | 2 | Production Machine;Coffee maker;Fax Machine;Fridge;Freezer
4 | Office | 0 | Printer
5 | Office | 1 | Printer;Coffee maker
6 | Office | 2 | Printer;Coffee maker;Computers;Fax Machine
即,每一行显示当时收到的内容,以及已经收到的所有内容。在 SQL 中有没有很好的方法来做到这一点?
【问题讨论】:
-
您尝试了什么,遇到了什么错误?
-
@NathanielFlick OP 实际上确实显示了他们尝试过的内容,并且没有错误,除了输出不是我们想要的。
-
@TimBiegeleisen “在 SQL 中有没有很好的方法来做到这一点?”在我看来,这个问题是开放式的,未经测试?
-
@NathanielFlick 这根本不是开放式的,OP 给了我们他想要的输出。我在下面尝试了一个查询,完全未经测试,因为我不知道 HANA。我会等待反馈。
-
@TimBiegeleisen 够公平的。
标签: sql hana hana-sql-script