我終於加入了許多個月後總是從這裏得到我的答案,而不必問,而只是在這裏搜索:)。Informix CASE和求和結果
我是相當新的Informix和我與我的第一個case語句掙扎:
它的粗略的想法是,我基於收入獎勵計劃兩個月授予點有雙點個月。
我的選擇看起來是這樣的:
Select YearMonth,
Account_Number,
Customer_Name,
Gross_Revenue,
Gross_Revenue * BLC_multiplier BLC_Points
from (
Select salesstat.year_num||salesstat.int_num YearMonth,
Customer.cust_code Account_Number,
Customer.name_text Customer_Name,
sum(salesstat.net_amt-salesstat.return_net_amt) Gross_Revenue,
CASE
WHEN
salesstat.int_num in (4,8)
THEN
.02
ELSE
.01
END BLC_multiplier
from Customer,
salesstat,
warereptdetl,
Product,
maingrp
Where product.cmpy_code = 'AB'
and Product.part_code = salesstat.part_code
and salesstat.cmpy_code = 'AB'
and customer.cmpy_code = 'AB'
and customer.cust_code = salesstat.cust_code
and salesstat.rept_code = '0'
and warereptdetl.ware_code = salesstat.ware_code
and warereptdetl.cmpy_code = 'AB'
and salesstat.year_num||salesstat.int_num in ('201412','20151','20152','20153','20154','20155','20156','20157','20158','20159')
and salesstat.ord_ind in ('7','8')
and salesstat.stat_type_code = 'MLY'
and salesstat.int_num > 0
and warereptdetl.warereptgrp_code in('NSW','MNW')
and maingrp.maingrp_code = salesstat.maingrp_code
and maingrp.cmpy_code = 'AB'
and customer.ref6_code = 'BLC'
and customer.ref7_code in ('Y','U')
and customer.cust_code in ('408759','112348')
group by YearMonth,
Customer.cust_code,
Customer.name_text,
BLC_multiplier
Order by YearMonth asc,
Customer.cust_code asc
)
我想要做的這一切一氣呵成類似:
Select salesstat.int_num MonthValue,
sum(salesstat.net_amt-salesstat.return_net_amt) Gross_Revenue,
sum(salesstat.net_amt-salesstat.return_net_amt) *
CASE
WHEN
salesstat.int_num in (4,8)
THEN
.02
ELSE
.01
END BLC_Points
但是當我做它告訴我,BLC_Points需要在(它不能因爲它是一個集合字段)
我也試過:
Select salesstat.int_num MonthValue,
sum(salesstat.net_amt-salesstat.return_net_amt) Gross_Revenue,
CASE
WHEN
salesstat.int_num in (4,8)
THEN
sum(salesstat.net_amt-salesstat.return_net_amt) * .02
ELSE
sum(salesstat.net_amt-salesstat.return_net_amt) * .01
END BLC_Points
雖然我的修補程序確實可行,但我想確保我正確地做到了。不正確的代碼很難維護。
歡迎來到Stack Overflow作爲海報。您的頂級查詢缺少大量的SQL(一個左括號,至少一個GROUP BY子句,可能是WHERE子句,等等)。您能否提供查詢的其餘部分以及我們需要的表(或多個表)的大綱模式,最好是使用幾行樣本數據以及這些行所需的結果? – 2015-02-11 23:33:31
使用最少代碼是一個好主意 - 這就是所謂的創建一個MCVE([最小,完整,可驗證示例](http://stackoverflow.com/help/mcve))或 SSCCE([Short,Self -Contained,Correct Example](http://sscce.org/))。但是,有必要提供足夠完整的代碼,我不知道你在做什麼,因爲FROM子句不完整或缺失。所以,儘可能多地移除,但要使其可行。 – 2015-02-11 23:46:52
感謝Jonathan提示,我會確保我總是發佈更全面的查詢。 – 2015-02-11 23:49:58