2015-06-22 78 views
0

我试图让查询显示如下结果,但我无法做到这一点。SQL从不同列中获取结果

Salestable

receipt product saletype qtysold sellprice discount 
------------------------------------------------------------------ 
31103 - sugar ------ I ------- 1 ------ 25 -------- 0 
31103 - sugar ------- W ------- 1 ------- 0 --------- 3 
31103 - milk ------- I ------- 1 ------ 39 -------- 0 
31103 - milk ------- W ------ 1 ------- 0 --------- 3 

我的查询:

Select 
    receipt, product, 
    qty sold, (where saletype='I') 
    sellprice, (where saletype='I') 
    discount (where salestype='W') 
from 
    salestable 

所以我的结果看起来像下面。

Receipt Product Qtysold Sellprice Discount 
------------------------------------------------ 
31103 --- sugar ---- 1 ------ 25 --------- 3 
31103 --- milk ------ 1 ------ 39---------- 14 
+0

显示你的尝试。 –

+0

你的数据是否总是像这样成对? – Andrew

+0

现在我通过使用下面的查询得到真正的关闭。 – louise

回答

0

请记住,这只有在您有成对数据时才有效。否则你将不得不相应地调整外部。

Select a.receipt, a.product, x.QtySold, x.SellPrice, y.discount 
(
select distinct receipt, product from salestable 
) a 
outer apply (
    Select B.QtySold, B.SellPrice from salestable B WHERE A.receipt = B.receipt AND A.product = B.product AND b.SALETYPE = 'I' 
) x 

outer apply (
Select B.discount from salestable B WHERE A.receipt = B.receipt AND A.product = B.product AND b.SALETYPE = 'W' 
) y 
0

所以你是在正确的轨道上。

select 
receipt, 
product, 
max(case when salestype='I' then sellprice else null end) as SellPrice, 
max(case when salestype ='I' then qty_sold else null end) as QtySold, 
max(case when salestype = 'W' then discount else null end) as discount 
from 
salestable 
group by 
receipt, 
product 
0

您的查询应该是这样的:

SELECT 
    receipt, product, 
    qtySold = SUM(CASE WHEN saletype = 'I' THEN qtySold ELSE 0 END), 
    sellprice = SUM(CASE WHEN saletype = 'I' THEN sellprice ELSE 0 END), 
    discount = SUM(CASE WHEN salestype = 'W' THEN discount ELSE 0 END) 
FROM 
    salestable 
GROUP BY 
    receipt, product 
相关问题