我在下面运行我的查询以提取数据,而我有三列我想要使用SUM。但是,它会将数据聚合到一个输出中,而不是为它从中提取的每一行输出数据。
请参阅第二个select语句,如何分离数据?
SELECT a.RTL_TRAN_ID, b.LINEITM_SEQ, b.BEGIN_DATE_TIMESTAMP, b.ITEM_ID, b.ITEM_STYLE_ID, b.ITEM_QUANTITY, b.ITEM_BASE_UNIT_PRICE, b.ITEM_UNIT_PRICE, b.ITEM_EXTENDED_AMT, x.RTL_LOC_ID
FROM CMP_PROMO_TRAN_RESULT AS a
JOIN TRN_LINE_ITEM AS b
ON a.RTL_TRAN_ID = b.RTL_TRANS_ID
JOIN TRN_TRANSACTION AS x
ON x.RTL_TRANS_ID = a.RTL_TRAN_ID
WHERE a.PROMOTION_ID IN (51)
AND b.lineitm_typcode = 'sale'
AND b.item_base_unit_price <> b.item_unit_price
ORDER BY a.RTL_TRAN_ID
SELECT
SUM(b.ITEM_QUANTITY) * SUM(b.ITEM_BASE_UNIT_PRICE) - SUM(b.ITEM_EXTENDED_AMT)
AS 'Discount Given'
FROM CMP_PROMO_TRAN_RESULT AS a
JOIN TRN_LINE_ITEM AS b
ON a.RTL_TRAN_ID = b.RTL_TRANS_ID
WHERE a.PROMOTION_ID IN (51)
答案 0 :(得分:1)
如果您使用SUM()
,则告诉MySQL将同一组的聚合数据转换为一个数字。如果您还没有添加隐式GROUP BY
,则会添加。{/ p>
在您的情况下,您似乎不想聚合。然后你应该重写
您的查询是这样的(即只删除SUM()
聚合)。
更新了查询(更多列支持调试)
SELECT
b.ITEM_QUANTITY
, b.ITEM_BASE_UNIT_PRICE
, b.ITEM_EXTENDED_AMT
, b.ITEM_QUANTITY * b.ITEM_BASE_UNIT_PRICE - b.ITEM_EXTENDED_AMT
AS 'Discount Given'
FROM
CMP_PROMO_TRAN_RESULT AS a
JOIN TRN_LINE_ITEM AS b
ON a.RTL_TRAN_ID = b.RTL_TRANS_ID
WHERE a.PROMOTION_ID IN (51)