sql - 如何在运算符 SQL Server 中构建动态?
问题描述
我想用这个流程图创建简单的选择查询:
声明 todo 变量
如果 todo 等于 'all' 然后运行
select * from temptable where part in ('todo', 'done', 'doing')
如果 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 引入子查询时,选择列表中只能指定一个表达式。
我怎么解决这个问题?
解决方案
在这里填空,但使用普通的布尔逻辑:
SELECT *
FROM dbo.YourTable
WHERE (@Todo = 'All' AND Part IN ('todo','done','doing'))
OR (@ToDo = 'Done' AND Part IN ('done','doing'))
推荐阅读
- javascript - 是否可以编写递归块函数?
- python - 使用 pyinstaller 的错误消息
- c# - 没有 AssemblyInfo 的 Visual Studio 项目
- postgis - PostGIS ST_Distance_Spheroid 或 Haversine
- android - 如何以编程方式在 ViewPager 中设置选项卡的数量及其各自的标签?
- c# - 如何编写允许任一索赔的政策
- excel - 如何在索引函数中创建变量范围?
- google-apps-script - 如果 2 个单元格匹配,Google 脚本会创建警报
- reactjs - 是什么让我们的 Action Creator 在 React 中作为道具可用?
- google-cloud-platform - Google Cloud IoT 频繁从云功能向设备发送配置更新时,几乎没有丢失配置更新消息