单个表中的多个查询结果

时间:2013-08-08 14:17:30

标签: sql

我有这个问题:

select sum(QTYINSTOCK * AVGPRICE) as Albums 
from inventoryinfo
WHERE Category = 'Albums'

它返回:

Albums
$660.80

我有办法在一个查询中运行多个查询并在单个表中返回吗?例如:

select sum(QTYINSTOCK * AVGPRICE) as Albums from inventoryinfo
WHERE Category = 'Albums'
select sum(QTYINSTOCK * AVGPRICE) as Prints from inventoryinfo
WHERE Category = 'Prints'
select sum(QTYINSTOCK * AVGPRICE) as Frames from inventoryinfo
WHERE Category = 'Frames'


Albums  |  $660.80
Prints  |  $123.00
Frames  |  $67.00

====== 看起来像是一致意见是使用联盟 结果并没有像我想的那样格式化,它返回

Albums
660.80
123.00
67.00

3 个答案:

答案 0 :(得分:11)

只需使用GROUP BY

select Category, sum(QTYINSTOCK * AVGPRICE) as Total from inventoryinfo
WHERE Category IN ('Albums', 'Prints', 'Frames')
GROUP BY Category

或者,如果您希望结果包含多个

select 
    SUM(CASE WHEN Category ='Albums' THEN QTYINSTOCK * AVGPRICE ELSE 0 END) as Albums END
    SUM(CASE WHEN Category ='Prints' THEN QTYINSTOCK * AVGPRICE ELSE 0 END) as Prints END
    SUM(CASE WHEN Category ='Frames' THEN QTYINSTOCK * AVGPRICE ELSE 0 END) as Frames END
FROM inventoryinfo
WHERE Category IN ('Albums', 'Prints', 'Frames')
GROUP BY Category

答案 1 :(得分:0)

您可以使用Union来执行此操作。请记住,如果您以后决定在结果中添加额外的列,则每个选择必须返回相同数量的列。

select sum(QTYINSTOCK * AVGPRICE) as Albums, 'Albums' as Type from inventoryinfo
WHERE Category = 'Albums'
UNION ALL
select sum(QTYINSTOCK * AVGPRICE) as Prints ,'Prints' as Type from inventoryinfo
WHERE Category = 'Prints'
UNION ALL
select sum(QTYINSTOCK * AVGPRICE) as Frames,'Frames' as Type from inventoryinfo
WHERE Category = 'Frames'

答案 2 :(得分:-2)

工会经营者:

select "ten", 10
union
select "twenty", 20
union
select "thirty", 30

产生

ten    | 10
twenty | 20
thirty | 30
相关问题