Case-statementsproblem, um Werte ohne Null in einer Zeile anzuzeigen

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 

Ich versuche, Input und Output-Steuer in der gleichen Zeile für einen Bericht anzuzeigen hängt von us_code ist 'r' und 's'. Aber ich bekomme die Ergebnisse wie

wenn die eingehende steuer es gibt … die steuerungssteuerspalte wird null sein, wenn die steuersteuer vorhanden ist … die eingegebene steuerspalte wird null sein

Ich möchte die beiden in der gleichen Zeile und keine Notwendigkeit, null in jeder Zeile zu machen

bitte helfen

   
 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 */ 

Du musst eine GROUP BY zu deiner Abfrage auf etwas hinzufügen (evtl. GROUP BY si.id ?)

Und legte die CASE statementen in Aggregate. z.B

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