2017-07-18 61 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