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 )