条款2不同的限制

时间:2017-07-18 15:57:26

标签: sql sql-server

我有一个数据表,我想制作一个WHERE子句,其中有两个不同的限制适用于同一个变量。我不知道如何应用它。

这是我目前的表格(减去我的目标的摘要栏目)

 ID    Location    Price     PriceDescription     SummedCost     Summary
 1     Park        -10       Cost.Water           -18            -7
 1     Park        -8        Cost.Gas
 1     Park        11        Sold.Price
 2     Tom         20        Sold.Price           -6             14
 2     Tom         -6        Cost.Soap
 3     Matt        -15       Cost.Tools           -30            -9
 3     Matt        -15       Cost.Gas
 3     Matt        21        Sold.Price
 4     College     32        Sold.Price           -22            21
 4     College     -22       Cost.Water
 4     College     11        Sold.LateFee

我的代码是

SELECT ID 
    ,Location
    ,Price
    ,PriceDescription
    ,SUM(Price) over(Partition by Location) AS SummedCost
FROM 
    table
WHERE 
    PriceDescription LIKE 'Cost.%'

这就是我遇到问题的地方。我想要汇总所有价格的汇总列,但我不知道如何写一个WHERE语句,说明SummedCost列的PriceDescription LIKE'Cost。%'和PriceDescription LIKE'%。%'摘要栏。

这可能吗?我尝试将WHERE PriceDescription LIKE '%.%'添加到SUM(Price) over(Partition by Location) AS SummedCost,但我收到了关于'as'的错误。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

删除WHERE子句,并在CASE中使用SUM()表达式:

SELECT ID 
       ,Location
       ,Price
       ,PriceDescription
       ,SUM(Case When PriceDescription Like 'Cost.%' 
                 Then Price 
                 Else 0 
            End) Over(Partition by Location) AS SummedCost
       ,SUM(Price) Over(Partition by Location) As Summary
FROM table

答案 1 :(得分:0)

您可以使用以下案例:

,SUM(case when PriceDescription like 'Cost.%' then Price else 0 end) over(Partition by Location) AS SummedCost