SQL 完整查询时的服务器查询案例
SQL Server Query Case When With Full Queries
我正在尝试创建一个脚本。该脚本将声明一个带有触发词的变量,然后我需要 运行 其中一个查询取决于触发词和 return 所有结果,例如:
DECLARE @name varchar(50)
set @name = 'value from the script'
select
case
when @name = 'orders' then (select * from orders)
when @name = 'sales' then (select * from sales)
..etc
end
但这会导致错误,因为我正在尝试 运行 包含超过 1 行结果的完整查询。我被困在这里了。提前谢谢你
使用 if
:
declare @name varchar(50);
set @name = 'value from the script';
if @name = 'orders'
begin;
select * from orders;
end;
if @name = 'sales'
begin;
select * from sales;
end;
声明一个变量并将查询分配给该变量。
DECLARE @name varchar(50)
set @name = 'value from the script'
DECLARE @MyQuery NVARCHAR(MAX)
select
@MyQuery = CASE
WHEN @name = 'orders' then 'select * from orders'
WHEN @name = 'sales' then 'select * from sales'
ELSE 'SELECT 1' END
EXECUTE sp_executesql @MyQuery
请尝试以下...
DECLARE @name VARCHAR(50)
SET @name = 'value from the script'
IF ( @name = 'orders' )
( SELECT * FROM orders )
ELSE IF ( @name = 'sales' )
( SELECT * FROM sales )
我正在尝试创建一个脚本。该脚本将声明一个带有触发词的变量,然后我需要 运行 其中一个查询取决于触发词和 return 所有结果,例如:
DECLARE @name varchar(50)
set @name = 'value from the script'
select
case
when @name = 'orders' then (select * from orders)
when @name = 'sales' then (select * from sales)
..etc
end
但这会导致错误,因为我正在尝试 运行 包含超过 1 行结果的完整查询。我被困在这里了。提前谢谢你
使用 if
:
declare @name varchar(50);
set @name = 'value from the script';
if @name = 'orders'
begin;
select * from orders;
end;
if @name = 'sales'
begin;
select * from sales;
end;
声明一个变量并将查询分配给该变量。
DECLARE @name varchar(50)
set @name = 'value from the script'
DECLARE @MyQuery NVARCHAR(MAX)
select
@MyQuery = CASE
WHEN @name = 'orders' then 'select * from orders'
WHEN @name = 'sales' then 'select * from sales'
ELSE 'SELECT 1' END
EXECUTE sp_executesql @MyQuery
请尝试以下...
DECLARE @name VARCHAR(50)
SET @name = 'value from the script'
IF ( @name = 'orders' )
( SELECT * FROM orders )
ELSE IF ( @name = 'sales' )
( SELECT * FROM sales )