首页 > 解决方案 > 如何在运算符 SQL Server 中构建动态?

问题描述

我想用这个流程图创建简单的选择查询:

  1. 声明 todo 变量

  2. 如果 todo 等于 'all' 然后运行

     select * 
     from temptable 
     where part in ('todo', 'done', 'doing') 
    
  3. 如果 todo 等于 'done' 然后运行

     select *
     from temptable    
     where part in ('done', 'doing')
    

为此,我写了这个查询:

declare @ToDo varchar(max)
set @ToDo = 'all';

select *
from tempTable
where [part] in (case 
                    when @todo = 'all' then (select 'todo', 'done', 'doing')
                 end)

但我收到此错误:

当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。

我怎么解决这个问题?

标签: sqlsql-servertsql

解决方案


在这里填空,但使用普通的布尔逻辑:

SELECT *
FROM dbo.YourTable
WHERE (@Todo = 'All' AND Part IN ('todo','done','doing'))
   OR (@ToDo = 'Done' AND Part IN ('done','doing'))

推荐阅读