我有以下查詢,它提供了我想要的數據,但是,我需要CASE語句中Cash,Credit和Check列的總和。我怎樣才能做到這一點?如果可能的話,我想使用一個過程。如何獲得列的總數
此外,對我來說,這個查詢似乎並沒有那麼高效。任何人都可以改進這一點?在我看來,我應該能夠設置變量,然後在我的CASE語句中使用它們,但不知道它是如何完成的。
SELECT
t1.order_id,
t3.price * SUM(t1.quantity) AS subtotal,
(SUM(t1.discount) + t3.discount)/100 AS disc,
t3.price * SUM(t1.quantity) * (t3.tax_state + t3.tax_fed) /100 AS tax,
t3.price * SUM(t1.quantity) - (SUM(t1.discount) + t3.discount)/100 + t3.price * SUM(t1.quantity) * (t3.tax_state + t3.tax_fed) /100 AS total,
CASE t2.payment_type WHEN 'Cash' THEN t3.price * SUM(t1.quantity) - (SUM(t1.discount) + t3.discount)/100 + t3.price * SUM(t1.quantity) * (t3.tax_state + t3.tax_fed) /100 ELSE 0.00 END AS cash,
CASE t2.payment_type WHEN 'Card' THEN t3.price * SUM(t1.quantity) - (SUM(t1.discount) + t3.discount)/100 + t3.price * SUM(t1.quantity) * (t3.tax_state + t3.tax_fed) /100 ELSE 0.00 END AS card,
CASE t2.payment_type WHEN 'Check' THEN t3.price * SUM(t1.quantity) - (SUM(t1.discount) + t3.discount)/100 + t3.price * SUM(t1.quantity) * (t3.tax_state + t3.tax_fed) /100 ELSE 0.00 END AS check
FROM pos_item_order AS t1
Join pos_order AS t2 ON t2.order_id = t1.order_id
Join inv_item AS t3 ON t3.item_id = t1.item_id
GROUP BY t1.order_id, t1.item_id
編輯:當我說我「需要的現金,信用卡的總和,並檢查列」,我的意思是每列相應的總數。
`與rollup`做你需要的嗎? – 2011-01-26 07:49:48
嗯..我以前沒有用過。我現在會讀一下。感謝您的建議,馬丁。 – Jim 2011-01-26 07:52:28
@Martin,看起來'彙總'水平合計行,我需要垂直總和或總計。 – Jim 2011-01-26 07:58:40