2

我在 SQL Server 2005 中有一个sales包含列的表。ID,paymentType,price

create table sales(id int IDENTITY(1,1),
                   paymentType varchar(2), 
                   price decimal(10,2) default(0)
                  )

有没有办法在一个查询中做到这一点?

SELECT SUM(price) as TE 
FROM sales 
WHERE paymentType = 'E' 

SELECT SUM(price) as TC 
FROM sales 
WHERE paymentType = 'C'
4

2 回答 2

6

您可以使用 GROUP BY 按 paymentType 对您的值进行分组,并获得两条记录“E”和“C”的总和

SELECT paymentType,SUM(price) 
FROM sales 
WHERE paymentType = 'E' or paymentType = 'C'
GROUP BY paymentType
于 2013-04-04T13:31:04.040 回答
4

你可以使用SUM()andCASE()来实现你想要的。

SELECT  SUM(CASE WHEN paymentType = 'E' THEN price ELSE 0 END) TE,
        SUM(CASE WHEN paymentType = 'C' THEN price ELSE 0 END) TC
FROM    TableName
WHERE   paymentType IN ('E','C')

WHERE需要过滤特定的付款,而不是扫描整个表格。您还需要在列上添加索引paymentType以进一步提高性能。

于 2013-04-04T13:29:35.060 回答