2011-02-16 39 views
0
select CASE WHEN (rtt.us_code = 's') 
        THEN rtt.name 
        ELSE '' END AS input_tax_name, 
      CASE WHEN (rtt2.us_code = 'r') 
        THEN rtt2.name 
        ELSE '' END AS output_tax_name, 
      CASE WHEN (rtt.us_code = 's') 
        THEN rtt.acc_id 
        ELSE 0 END AS input_tax_rate, 
      CASE WHEN (rtt2.us_code = 'r') 
        THEN rtt2.acc_id 
        ELSE 0 END AS output_tax_rate 
from supplier_item si 
JOIN ret_tx_type rtt 
ON si.ret_tx_type_id = rtt.ret_tx_type_id 
JOIN ret_tx_type rtt2 
ON si.ret_tx_type_id = rtt2.ret_tx_type_id 
where si.ret_tx_type_id is not null 

我想在報告的同一行顯示輸入和輸出稅取決於us_code是'r'和's'。 但我得到的結果類似案例陳述問題,顯示連續的值不爲空

如果進項稅有...銷項稅列將爲空 如果銷項稅是有...進項稅列將爲空

我正在想兩者在同一行,沒必要使空在任何行

請幫助

回答

3
SELECT 
    MAX(CASE rtt.us_code WHEN 's' THEN rtt.name END) AS input_tax_name, 
    MAX(CASE rtt.us_code WHEN 'r' THEN rtt.name END) AS output_tax_name, 
    MAX(CASE rtt.us_code WHEN 's' THEN rtt.acc_id END) AS input_tax_rate, 
    MAX(CASE rtt.us_code WHEN 'r' THEN rtt.acc_id END) AS output_tax_rate 
FROM supplier_item si 
    INNER JOIN ret_tx_type rtt 
    ON si.ret_tx_type_id = rtt.ret_tx_type_id 
GROUP BY ??? /* here you should supply a column, 
       presumably in 'si', that is common 
       to both of the related 'r'- and 
       's'-tax records */ 
2

你需要一個GROUP BY添加到您查詢的東西(可能GROUP BY si.id?)

並將CASE語句彙總。例如

MAX(CASE WHEN (rtt2.us_code = 'r') 
        THEN rtt2.acc_id 
        ELSE 0 END)