我正在嘗試在SQL Server中創建一個將客戶聚合活動合併到單個行中的表。在SQL中使用CASE語句時,如何擺脫額外的「group by」列?
例如,客戶A有2個會員訂單和3個事件訂單。現在我的查詢產生了2行。一個向客戶A顯示2個會員訂單和0個事件訂單,另一個顯示0個會員訂單和3個事件訂單。
如何創建一個只會創建一個看起來像這樣的行的查詢?我認爲問題在於我必須在group by
聲明中包含subsystem
和fulfill_status_code
。
下面是我使用的代碼:
select ship_master_customer_id,
CASE WHEN subsystem = 'MBR' AND fulfill_status_code != 'c' THEN count(order_no) ELSE null END as membership_orders,
CASE WHEN subsystem = 'MBR' AND fulfill_status_code != 'c' THEN sum(actual_total_amount) ELSE null END as membership_amount,
CASE WHEN subsystem = 'MTG' AND fulfill_status_code != 'c'THEN sum(actual_total_amount) ELSE null END as event_orders,
CASE WHEN subsystem = 'MTG' AND fulfill_status_code != 'c'THEN count(order_no) ELSE null END as event_amount
from order_detail od (nolock)
where invoice_date>'5/1/2015'
group by ship_master_customer_id, subsystem, fulfill_status_code
'我如何創建一個查詢來創建一個看起來像?我認爲問題在於我必須在子句中包含子系統和fulfill_status_code。「那麼,您的問題到底是什麼? – Angelo
你能解決你的問題嗎? –