2017-07-18 62 views
0

我有一个数据表,并且我想对具有2个不同限制的WHERE子句应用于相同的变量。我无法想出一个方法来应用它。WHERE子句2不同的限制

这是我目前的表(减去摘要列,它是我的目标)

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列的'Cost。%'和价格描述LIKE'%。%'摘要栏。

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

感谢您的帮助!

+0

请把你想要的结果的一个例子。我不明白你在问什么 – GuidoG

+0

@GuidoG表中的Summary列是我想要添加的,它目前不在我的表中。您会注意到,它将每个ID的价目表下的所有内容相加,但SummedCost列仅将每个ID的费用 – nola94

回答

1

SUM()取出WHERE条款,并使用CASE表达:

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 
0

您可以使用情况下,如下:

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