2014-11-24 29 views
0

我有這樣的查詢。SQL在一行中顯示2行

Query

執行後,我得到下面的結果。

Result

我想要做的是每個發票不,我想顯示「金額」作爲CashAmt和ChequeAmt 在一排。目前有2筆現金和支票記錄。

回答

3

您正在嘗試pivot您的結果。 ?您可以用group bymaxcase做到這一點:?

select mdr.invoiceno, mdr.invoicedate, mdr.customerid, mdr.netamount, cus.name, 
    max(case when pt.Name = 'Cash' then pay.amount end) CashAmt, 
    max(case when pt.Name = 'Cheque' then pay.amount end) ChequeAmt 
from customer cus 
    .... 
group by mdr.invoiceno, mdr.invoicedate, mdr.customerid, mdr.netamount, cus.name 
order by mdr.invoiceno 
+0

我可以知道爲什麼我們需要爲max使用(情況...爲什麼我們需要考慮MAX – Tom 2014-11-24 03:46:31

+0

@湯姆,你正在嘗試要結合2行轉換爲1('pivoting'的一種形式)。一種方法是使用'group by'的'max'集合將這些結果分組在一起。 – sgeddes 2014-11-24 03:53:27