【发布时间】:2016-08-15 20:08:46
【问题描述】:
消息 134,第 15 级,状态 1,第 21 行
变量名称“@AsOfDate”已被声明。变量名称在查询批处理或存储过程中必须是唯一的。
运行一组 IF 语句时出现此错误。理想情况下,我只需要在我感兴趣的季度将我的位切换为 1,然后执行我的代码。 IF 语句将设置我需要的日期。
我已经用IF 和ELSE IF 尝试过这个,但似乎都没有什么不同。任何关于我如何做到这一点的建议将不胜感激。遗憾的是,我不能简单地让它选择我所在的季度(或上一个季度),因为这些报告可能随时被要求。
-------------------------
-- Choose Quarter --
-------------------------
DECLARE @Q1 BIT = 0
DECLARE @Q2 BIT = 0
DECLARE @Q3 BIT = 0
DECLARE @Q4 BIT = 0
DECLARE @Annual BIT = 0
-------------------------
--Q1
IF @Q1 = '1'
BEGIN
DECLARE @AsOfDate datetime = '2016-03-31';
DECLARE @StartDate datetime = '2016-01-01'
END
--Q2
IF @Q2 = '1'
BEGIN
DECLARE @AsOfDate datetime = '2016-06-30';
DECLARE @StartDate datetime = '2016-04-01'
END
--Q3
IF @Q3 = '1'
BEGIN
DECLARE @AsOfDate datetime = '2016-09-30';
DECLARE @StartDate datetime = '2016-07-01'
END
--Q4
IF @Q4 = '1'
BEGIN
DECLARE @AsOfDate datetime = '2016-12-31';
DECLARE @StartDate datetime = '2016-10-01'
END
-- ANNUAL
IF @Annual = '1'
BEGIN
DECLARE @AsOfDate datetime = '2016-12-31';
DECLARE @StartDate datetime = '2016-01-01'
END
-- Check to ensure a time period is set
IF (@Q1 = 0 AND @Q2 = 0 AND @Q3 = 0 AND @Q4 = 0 AND @ANNUAL = 0)
BEGIN
PRINT 'NO TIME SET'
END
-- Run Code with dates
ELSE
BEGIN
编辑:
忽略...实际上阅读我的错误和代码清楚地表明我的声明是一个问题而不是变量的设置...解决方案是在我的 IF 语句之外声明变量并在语句中设置它们。
【问题讨论】:
-
很高兴您能够找到解决问题的方法。您应该将您的解决方案作为答案发布,而不是编辑您的问题,以便其他人能够看到它。
-
请发布答案,不要更新您的问题代码以使其正确。这只是令人困惑。
-
同意,我将重新编辑我的问题以显示原始错误代码。不知道为什么我不考虑简单地发布答案,我猜是因为它发生在我提出问题时是正确的:D
标签: variables if-statement sql-server-2014