Sql 如何在查询中使用CASE表达式?
当我想要执行我的case语句时,它会显示一些错误 我已经创建了一个人口统计查询。所以,我需要包括案例陈述Sql 如何在查询中使用CASE表达式?,sql,sql-server,case,Sql,Sql Server,Case,当我想要执行我的case语句时,它会显示一些错误 我已经创建了一个人口统计查询。所以,我需要包括案例陈述 SELECT DISTINCT 'Age' DemographicGroup, CASE WHEN DATEDIFF(YY, DOB, @ReportDate) 25 THEN '=25' WHEN DATEDIFF(YY, DOB, @ReportDate) BETWEEN 25 AND 35 THEN '26-35' W
SELECT DISTINCT
'Age' DemographicGroup,
CASE
WHEN DATEDIFF(YY, DOB, @ReportDate) 25 THEN '=25'
WHEN DATEDIFF(YY, DOB, @ReportDate) BETWEEN 25 AND 35 THEN '26-35'
WHEN DATEDIFF(YY, DOB, @ReportDate) BETWEEN 36 AND 45 THEN '36-45'
WHEN DATEDIFF(YY, DOB, @ReportDate) 45 THEN '46+'
END Label,
CASE
WHEN DATEDIFF(YY, DOB, @ReportDate) 25 THEN 1
WHEN DATEDIFF(YY, DOB, @ReportDate) BETWEEN 25 AND 35 THEN 2
WHEN DATEDIFF(YY, DOB, @ReportDate) BETWEEN 36 AND 45 THEN 3
WHEN DATEDIFF(YY, DOB, @ReportDate) 45 THEN 4
END GroupOrder
INTO
#Demo2
FROM
[dbo].[Dim_Borrower]
Msg 102,15级,状态1,第4行
“25”附近的语法不正确
Msg 102,15级,状态1,第7行
“Label”附近的语法不正确
Msg 102,15级,状态1,第11行
“GroupOrder”附近的语法不正确
您需要在WHEN表达式中使用比较运算符。比如=、等等 您还应添加一个显式ELSE案例,以避免意外的空输出: 您可以通过使用内部查询并使用更简单的CASE xpr WHEN val而不是较长的CASE WHEN expr形式来简化此过程,以减少重复代码
您需要在WHEN表达式中使用比较运算符。比如=、等等 您还应添加一个显式ELSE案例,以避免意外的空输出: 您可以通过使用内部查询并使用更简单的CASE xpr WHEN val而不是较长的CASE WHEN expr形式来简化此过程,以减少重复代码
申请的理由。你也不必因为这种情况
申请的理由。你也不必因为这种情况
我不明白你为什么指的是任何一张桌子。为什么不使用一个具有所需值的派生表呢
select 'Age' as DemographicGroup,
into #Demo2
from (values (1, '=25'),
(2, '26-35'),
(3, '36-45'),
(4, '46+')
) v(Label, GroupOrder);
这确保所有值都进入表中,而不管Dim_借款人是否拥有这些值
我还将包括年龄范围的下限和上限,以便将其与其他数据结合起来:
select 'Age' as DemographicGroup,
into #Demo2
from (values (1, '=25', 25, 25),
(2, '26-35', 26, 35),
(3, '36-45', 36, 45),
(4, '46+', 46, NULL)
) v(Label, GroupOrder, LowerAge, UpperAge);
我不明白你为什么指的是任何一张桌子。为什么不使用一个具有所需值的派生表呢
select 'Age' as DemographicGroup,
into #Demo2
from (values (1, '=25'),
(2, '26-35'),
(3, '36-45'),
(4, '46+')
) v(Label, GroupOrder);
这确保所有值都进入表中,而不管Dim_借款人是否拥有这些值
我还将包括年龄范围的下限和上限,以便将其与其他数据结合起来:
select 'Age' as DemographicGroup,
into #Demo2
from (values (1, '=25', 25, 25),
(2, '26-35', 26, 35),
(3, '36-45', 36, 45),
(4, '46+', 46, NULL)
) v(Label, GroupOrder, LowerAge, UpperAge);
谢谢你的帮助。我真的很感谢你们,谢谢你们的帮助。我真的很感激你们。
select 'Age' as DemographicGroup,
into #Demo2
from (values (1, '=25', 25, 25),
(2, '26-35', 26, 35),
(3, '36-45', 36, 45),
(4, '46+', 46, NULL)
) v(Label, GroupOrder, LowerAge, UpperAge);