私は、私が必要とするデータを私に与える次のクエリを持っていますが、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
編集:私は、私は「現金、クレジットの合計を必要と列を確認してください」と言うとき、私は列ごとにそれぞれの合計を意味します。
「ロールアップあり」は必要な作業を行いますか? –
ええと。私はそれ以前に使ったことがありません。私は今それについて少し読むでしょう。提案をありがとう、マーティン。 – Jim
@Martin、それはロールアップで行を横に合計し、私は合計または垂直に合計が必要と思われる。 – Jim