SUM 和 MINUS 在一个 SQL 查询参数中
SUM and MINUS in one SQL query parameter
我有一个有效的 Oracle SQL 查询,我必须对其进行更改,但不确定如何进行。查询如下:
SELECT
USERID,
SUM(CONTAINERS),
SUM(QTYMISTINT),
SUM(QTYXMISTINT),
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALLONS ELSE 0 END) AS Dispensed2018,
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALSMISTINT ELSE 0 END) AS Mistints2018
FROM MQ_CDS_NETTRAN
WHERE STORENBR = 1564
AND TRANCODE IN ('DISP','MIST')
GROUP BY USERID
ORDER BY USERID;
我需要做的是关于参数
(BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALSMISTINT ELSE 0 END) AS Mistints2018
我需要从该字段中减去一个数量:我需要对另一个字段 GALSXMISTINT 进行求和,然后从 Mistints2018 中减去 GALSXMISTINT 以获得名为 NetGalsMistint2018 的最终结果。我该怎么做?
您或许可以计算差值的条件和:
SELECT
USERID,
SUM(CONTAINERS),
SUM(QTYMISTINT),
SUM(QTYXMISTINT),
SUM(CASE WHEN BOOKDATE BETWEEN '01-JAN-18' AND '31-DEC-18'
THEN GALLONS ELSE 0 END) AS Dispensed2018,
SUM(CASE WHEN BOOKDATE BETWEEN '01-JAN-18' AND '31-DEC-18'
THEN GALSMISTINT ELSE 0 END) AS Mistints2018,
SUM(CASE WHEN BOOKDATE BETWEEN '01-JAN-18' AND '31-DEC-18'
THEN GALSMISTINT - GALSXMISTINT ELSE 0 END) AS NetGalsMistint2018
FROM MQ_CDS_NETTRAN
WHERE
STORENBR = 1564 AND TRANCODE IN ('DISP','MIST')
GROUP BY
USERID
ORDER BY
USERID;
不确定您的确切要求,但这里有一个左连接到列总和的子查询的示例。
SELECT
USERID,
SUM(CONTAINERS),
SUM(QTYMISTINT),
SUM(QTYXMISTINT),
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALLONS ELSE 0 END) AS Dispensed2018,
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALSMISTINT ELSE 0 END) AS Mistints2018,
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALSMISTINT ELSE 0 END) - x.SUM_GAL AS NetGalsMistint2018
FROM MQ_CDS_NETTRAN
LEFT JOIN ( SELECT USERID, SUM(GALSXMISTINT) AS SUM_GAL
FROM MQ_CDS_NETTRAN
GROUP BY USERID
) x ON X.USERID = MQ_CDS_NETTRAN.USERID
WHERE STORENBR = 1564
AND TRANCODE IN ('DISP','MIST')
GROUP BY USERID
ORDER BY USERID;
我有一个有效的 Oracle SQL 查询,我必须对其进行更改,但不确定如何进行。查询如下:
SELECT
USERID,
SUM(CONTAINERS),
SUM(QTYMISTINT),
SUM(QTYXMISTINT),
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALLONS ELSE 0 END) AS Dispensed2018,
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALSMISTINT ELSE 0 END) AS Mistints2018
FROM MQ_CDS_NETTRAN
WHERE STORENBR = 1564
AND TRANCODE IN ('DISP','MIST')
GROUP BY USERID
ORDER BY USERID;
我需要做的是关于参数
(BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALSMISTINT ELSE 0 END) AS Mistints2018
我需要从该字段中减去一个数量:我需要对另一个字段 GALSXMISTINT 进行求和,然后从 Mistints2018 中减去 GALSXMISTINT 以获得名为 NetGalsMistint2018 的最终结果。我该怎么做?
您或许可以计算差值的条件和:
SELECT
USERID,
SUM(CONTAINERS),
SUM(QTYMISTINT),
SUM(QTYXMISTINT),
SUM(CASE WHEN BOOKDATE BETWEEN '01-JAN-18' AND '31-DEC-18'
THEN GALLONS ELSE 0 END) AS Dispensed2018,
SUM(CASE WHEN BOOKDATE BETWEEN '01-JAN-18' AND '31-DEC-18'
THEN GALSMISTINT ELSE 0 END) AS Mistints2018,
SUM(CASE WHEN BOOKDATE BETWEEN '01-JAN-18' AND '31-DEC-18'
THEN GALSMISTINT - GALSXMISTINT ELSE 0 END) AS NetGalsMistint2018
FROM MQ_CDS_NETTRAN
WHERE
STORENBR = 1564 AND TRANCODE IN ('DISP','MIST')
GROUP BY
USERID
ORDER BY
USERID;
不确定您的确切要求,但这里有一个左连接到列总和的子查询的示例。
SELECT
USERID,
SUM(CONTAINERS),
SUM(QTYMISTINT),
SUM(QTYXMISTINT),
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALLONS ELSE 0 END) AS Dispensed2018,
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALSMISTINT ELSE 0 END) AS Mistints2018,
SUM(CASE WHEN (BOOKDATE >= '01-JAN-18' AND BOOKDATE <= '31-DEC-18')
THEN GALSMISTINT ELSE 0 END) - x.SUM_GAL AS NetGalsMistint2018
FROM MQ_CDS_NETTRAN
LEFT JOIN ( SELECT USERID, SUM(GALSXMISTINT) AS SUM_GAL
FROM MQ_CDS_NETTRAN
GROUP BY USERID
) x ON X.USERID = MQ_CDS_NETTRAN.USERID
WHERE STORENBR = 1564
AND TRANCODE IN ('DISP','MIST')
GROUP BY USERID
ORDER BY USERID;