我正在尝试通过使用 3 个表的联接来获取一些数据,例如
PRODUCT_ID
、PRODUCT_TITLE
和 STOCK
。第3张桌子看起来像这样
-----------
| METERS |
-----------
| METER_ID|
| PARK_ID |
| ZONE_ID |
-----------
----------------------
| MT_PRODUCT_DETAILS |
----------------------
| PRODUCT_ID |
| PRODUCT_TITLE |
| DESCRIPTION |
-----------------------
-----------------------
| MT_AS_EVENT_CURRENT |
-----------------------
| DEVICE_ID |
| MORE_DATA |
| PRODUCT_ID |
| STOCK_PRODUCT |
| STATUS |
| DATE_DEVICE |
| EVENT_TYPE_ID |
-------------------------
我想使用此查询获取所有产品的库存数量。
SELECT
PRODUCT_TITLE, SUM(REMAINING_STOCK) STOCK
FROM
(SELECT
PRODUCT_TITLE, REMAINING_STOCK
FROM
(SELECT
PRODUCT_ID, SUM(REMAINING_STOK) REMAINING_STOCK
FROM
(SELECT
METER_ID, PRODUCT_ID, MAX(REMAINING_STOCK) keep
(DENSE_RANK last ORDER BY DATE_DEVICE) REMAINING_STOCK
FROM
(SELECT
METERS.METER_ID, DATE_DEVICE, PRODUCT_ID, STOCK_PRODUCT REMAINING_STOCK
FROM
MT_AS_EVENT_CURRENT EV
INNER JOIN
METERS ON EV.DEVICE_ID = METERS.METER_ID
WHERE
EVENT_TYPE_ID = 1111
AND EV.DATE_DEVICE BETWEEN SYSDATE - 60 AND SYSDATE)
GROUP BY
METER_ID, PRODUCT_ID)
GROUP BY
PRODUCT_ID) STOCKS
INNER JOIN
MT_PRODUCT_DETAILS PRODUCT ON STOCKS.PRODUCT_ID = PRODUCT.PRODUCT_ID)
GROUP BY
PRODUCT_TITLE
通过使用此查询,我可以获取
STOCK
计数和PRODUCT_TITLE
的数据,但无法获取PRODUCT_ID
。
有人可以告诉我如何通过在查询中进行一些微小的更改来获得
PRODUCT_ID
吗?
仅供参考,我尝试在外部查询本身中使用 PRODUCT_ID
。但不知怎的,这不起作用。输出应为 Product_ID、Product_TITLE、STOCK(总数量)GROUP BY PRODUCT_TITLE
PRODUCT_TITLE
,这应该会产生您想要的输出,如下所示:
SELECT
T.PRODUCT_ID,
T.PRODUCT_TITLE,
SUM(REMAINING_STOK) REMAINING_STOCK
FROM
(
SELECT
METERS.METER_ID,
EV.PRODUCT_ID,
MAX(EV.STOCK_PRODUCT) KEEP(DENSE_RANK LAST ORDER BY EV.DATE_DEVICE) REMAINING_STOCK,
PRODUCT.PRODUCT_TITLE
FROM
MT_AS_EVENT_CURRENT EV
INNER JOIN METERS ON EV.DEVICE_ID = METERS.METER_ID
INNER JOIN MT_PRODUCT_DETAILS PRODUCT ON EV.PRODUCT_ID = PRODUCT.PRODUCT_ID
WHERE
EV.EVENT_TYPE_ID = 1111
AND EV.DATE_DEVICE BETWEEN SYSDATE - 60 AND SYSDATE
GROUP BY
METERS.METER_ID,
EV.PRODUCT_ID,
PRODUCT.PRODUCT_TITLE
) T
GROUP BY
T.PRODUCT_ID,
T.PRODUCT_TITLE;