2017-07-18 1 views
0

私はデータのテーブルを持っており、同じ変数に2つの異なる制限を適用してWHERE句を作成したかったのです。私はそれを適用する方法を理解することはできません。WHERE節2異なる制限

これは私の現在のテーブル(MINUS私の目標ISサマリー列)

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.%' 

であると私は問題に実行場所です。私はすべての価格を要約した要約列を持っていたいと思いますが、PriceDescription LIKE 'Cost。%'はSummedCost列、PriceDescription LIKE '%。%'はWHERE文を書く方法を知らないサマリー列。

これは可能ですか?私はWHERE PriceDescription LIKE '%.%'SUM(Price) over(Partition by Location) AS SummedCostに追加しようとしましたが、 'as'に関するエラーが発生しました。

ありがとうございました!

+0

あなたの望ましい結果の例を投稿してください。 – GuidoG

+0

@GuidoG私のテーブルのサマリー列は、私が追加したいものです。私のテーブルには現在ありません。各IDの価格リストの下にあるすべてのものが合計されますが、SummedCost列は各IDのコストのみを合計します – nola94

答えて

1

WHERE句を削除し、SUM()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