SQL Server:选择查询

时间:2015-09-08 23:35:24

标签: sql sql-server

我的选择查询需要帮助。我希望有3个条件取决于sum(sd.Price * sd.Quantity)。比如,如果sum介于0-100种类型之间,则介于100-200种类型之间,或者更大,然后是200种类型,然后类型为SaleState虚拟列。

我们当然可以解决这个问题,但我想要的是,在这个选择查询中进行。我知道这是可行的,我只是不记得(我之前做过)并且在我的搜索中无法找到解决方案。

我的数据表是:

  • Products(ProductID,ProductName,ProductPrice)
  • Sales Details(SaleID,ProductID,ProductPrice,Quantity)

查询:

select 
    p.ProductName, sum(sd.Price*sd.Quantity) as Total,
    (select 'good' where Total > 100) as SaleState
    -- We need something here that haves 3 condition.
from 
    Products p
left join 
    [Sales Details] sd on p.ProductID = sd.ProductID
group by 
    p.ProductName

1 个答案:

答案 0 :(得分:2)

select 
productname, total, 
case when total < 100 then 'Bad' 
     when total >= 100  and total < 200 then 'OK'
     when total > 200 then 'Good'
end as salestate
from
(       
select 
p.ProductName, sum(sd.Price*sd.Quantity) as Total
from Products p
left join [Sales Details] sd on p.ProductID = sd.ProductID
group by p.ProductName
) t

您可以使用case语句根据查询中的sum分配值。