use*_*409 10 sql t-sql database sql-server if-statement
我有一些奇怪的问题,使用IF/ELSE来确定要执行哪一个或两个SELECT语句.我在运行完整语句时得到的错误消息是我的临时表已经存在,但如果我运行两个单独的IF语句的两个单独执行,则不会发生这种情况.
这是SQL Server中的代码:
IF (select BusinessDayCount from Calendartbl) <= 1
BEGIN
SELECT * into #temp1
FROM PreviousMonthTbl
END
ELSE
BEGIN
SELECT * into #temp1
FROM CurrentMonthTbl
END
Run Code Online (Sandbox Code Playgroud)
Ric*_*iwi 12
它是SQL Server中语法检查的"功能".您根本无法在同一批次中"创建"两次#temporary表.
这是您需要的模式.
SELECT * into #temp1
FROM PreviousMonthTbl
WHERE 1=0;
IF (select BusinessDayCount from Calendartbl) <= 1
BEGIN
INSERT into #temp1 SELECT *
FROM PreviousMonthTbl
END
ELSE
BEGIN
INSERT into #temp1 SELECT *
FROM CurrentMonthTbl
END
Run Code Online (Sandbox Code Playgroud)
如果您愿意,还可以将分支(在本例中)表示为WHERE子句:
SELECT * into #temp1
FROM PreviousMonthTbl
WHERE (select BusinessDayCount from Calendartbl) <= 1
UNION ALL
SELECT *
FROM CurrentMonthTbl
WHERE isnull((select BusinessDayCount from Calendartbl),2) > 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10406 次 |
| 最近记录: |