SQL Server中具有多个where条件的相同选择条件

SQL Server中具有多个where条件的相同选择条件,sql,sql-server,Sql,Sql Server,当表中需要相同的字段但具有不同的where条件时,是否可以这样做 我曾经尝试过这样做,但是它缺少了一些东西,这就是为什么它不能正常工作的原因 ;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 ( SELE

当表中需要相同的字段但具有不同的where条件时,是否可以这样做

我曾经尝试过这样做,但是它缺少了一些东西,这就是为什么它不能正常工作的原因

;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_得分_0_11”和其他的总和,其中district='ABC'和district='DEF',并将它们合并到一个表中

我发现此查询有一个错误:

关键字“AS”附近的语法不正确

我希望每个地区都能得到这样的结果


我猜您想要:

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似乎不是特别有用。

我猜您想要:

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似乎不是特别有用。

您的代码有什么问题?它不编译吗?>错误?它是否没有提供预期的结果>您期望什么?对于您展示的案例,您可以在('ABC','DEF')中编写[DISTRICT_NAME]的
,或者当您需要每个查询的聚合时,使用视图。我看不出这将如何从公共表表达式中获益。[DISTRICT_NAME]不在产品中SCTE您的代码有什么问题?它不编译吗?>错误?它是否没有提供预期的结果>您期望什么?对于您展示的案例,您可以在('ABC','DEF')中编写[DISTRICT_NAME]的
,或者当您需要每个查询的聚合时,使用视图。我看不出这将如何从公共表表达式中受益。[DISTRICT_NAME]不在ProductsCTE中