【发布时间】:2025-12-26 17:50:11
【问题描述】:
这是我在运行如下所示的查询时遇到的错误:必须声明标量变量“@ReportDate”。 “标签”附近的语法不正确。 “GroupOrder”附近的语法不正确。必须声明标量变量“@Demographics1”。
如何编写此查询以无错误地运行?
我的 ReportDate 是日期时间 我的 Demographics1 是 varchar(max)
这里是查询:
SELECT DISTINCT
'Age' DemographicGroup, CASE WHEN DATEDIFF(YY, [Date of Birth], @ReportDate) < 25 THEN '<=25'
WHEN DATEDIFF(YY, [Date of Birth], @ReportDate) BETWEEN 25 AND 35 THEN '26-35'
WHEN DATEDIFF(YY, [Date of Birth], @ReportDate) BETWEEN 36 AND 45 THEN '36-45'
WHEN DATEDIFF(YY, [Date of Birth], @ReportDate) > 45 THEN '46+'
END Label,
CASE WHEN DATEDIFF(YY, [Date of Birth], @ReportDate) < 25 THEN 1
WHEN DATEDIFF(YY, [Date of Birth], @ReportDate) BETWEEN 25 AND 35 THEN 2
WHEN DATEDIFF(YY, [Date of Birth], @ReportDate) BETWEEN 36 AND 45 THEN 3
WHEN DATEDIFF(YY, [Date of Birth], @ReportDate) > 45 THEN 4
END GroupOrder
INTO #Demo2
FROM [dbo].[Dim_Borrower]
UNION
SELECT DISTINCT 'Marital Status', [Marital Status], 1
FROM [dbo].[Dim_Borrower]
UNION
SELECT DISTINCT 'Race', Race, 1
FROM [dbo].[Dim_Borrower]
UNION
SELECT DISTINCT 'Sex', Sex, 1
FROM [dbo].[Dim_Borrower]
SELECT *,DemographicGroup + ' - ' + Label RealLabel
FROM #Demo2
WHERE DemographicGroup IN (@Demographics1)
ORDER BY DemographicGroup, GroupOrder
【问题讨论】:
-
哪个 dbms? (这肯定不是 ANSI SQL 语法……)
-
你确定这是整个查询吗?因为你有 2 个查询
-
错过声明变量
Declare @ReportDate date,@Demographics1 varchar(50)除此之外查询没有错误
标签: sql visual-studio-2010 variables reporting-services syntax