2017-12-22 16 views
0

テーブルから同じフィールドが必要ですが、条件が異なる場合は、このようなことが可能ですか?SQL Serverで条件が複数ある場合の同じ選択基準

私はこれをこのようにしようとしましたが、その中に欠けているものがあるため、正しく動作しません。

;WITH ProductsCTE (PSC_Score_0_11, PSC_Score_12_18, PSC_Score_19_23, 
        PSC_Score_24_34, PSC_Score_35_50, PSC_Score_51_100, 
        Total AS 
( 
    SELECT 
     SUM(CONVERT(int, PSC_Score_0_11)) AS PSC_Score_0_11, 
     SUM(CONVERT(int, PSC_Score_12_18)) AS PSC_Score_12_18, 
     SUM(CONVERT(int, PSC_Score_19_23)) AS PSC_Score_19_23, 
     SUM(CONVERT(int, PSC_Score_24_34)) AS PSC_Score_24_34, 
     SUM(CONVERT(int, PSC_Score_35_50)) AS PSC_Score_35_50, 
     SUM(CONVERT(int, PSC_Score_51_100)) AS PSC_Score_51_100, 
     (SUM(CONVERT(int, PSC_Score_0_11)) + SUM(CONVERT(int, PSC_Score_12_18)) + 
     SUM(CONVERT(int, PSC_Score_19_23)) + SUM(CONVERT(int, PSC_Score_24_34)) + 
     SUM(CONVERT(int, PSC_Score_35_50)) + SUM(CONVERT(int, PSC_Score_51_100))) AS Total 
    FROM 
     VillageLevelPscData 
) 
SELECT * 
FROM ProductsCTE 
WHERE [DISTRICT_NAME] = 'ABC' 

UNION ALL 

SELECT * 
FROM ProductsCTE 
WHERE [DISTRICT_NAME] = 'DEF' 

私は「PSC_Score_0_11」の合計と、1つのテーブルに他の地区=「ABC」と地区=「DEF」と組合それらすべてをその結果を取得したいです。

私はこのクエリのエラーを取得する:キーワードの近くに

不適切な構文 'AS'。

各地区ごとにこのような結果を得たいと考えています。

enter image description here

+0

コードに何が問題なのですか?それはコンパイルされませんか? >エラー?それは期待される結果をもたらすものではありません>あなたは何を期待していますか?表示する場合は、 'WHERE [DISTRICT_NAME] IN( 'ABC'、 'DEF')'と書くか、クエリごとに集計が必要な場合はビューを使用します。私はこれが共通のテーブル表現の恩恵を受ける方法を見ていない。 – dlatikay

+0

[DISTRICT_NAME]はProductsCTEにありません – Paparazzi

答えて

2

私は、あなたがしたいことを推測しています:

select district_name, 
     sum(CONVERT(int,PSC_Score_0_11)) as PSC_Score_0_11, 
     sum(CONVERT(int,PSC_Score_12_18)) as PSC_Score_12_18, 
     sum(CONVERT(int,PSC_Score_19_23)) as PSC_Score_19_23, 
     sum(CONVERT(int,PSC_Score_24_34)) as PSC_Score_24_34, 
     sum(CONVERT(int,PSC_Score_35_50)) as PSC_Score_35_50, 
     sum(CONVERT(int,PSC_Score_51_100)) as PSC_Score_51_100, 
     (SUM(CONVERT(int,PSC_Score_0_11)) + SUM(CONVERT(int,PSC_Score_12_18)) + 
SUM(CONVERT(int,PSC_Score_19_23)) + SUM(CONVERT(int,PSC_Score_24_34)) 
+ SUM(CONVERT(int,PSC_Score_35_50))+ SUM(CONVERT(int,PSC_Score_51_100)) 
     ) as Total 
from VillageLevelPscData 
group by district_name; 

CTEが特に便利いないようです。

関連する問題