2014-11-24 31 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