我有一个数据库查询...
select foo, bar, status
from mytable
where bar in (bar1, bar2, bar3);
status 是与 foo-bar 对关联的状态。 GUI 显示将为每个 foo 显示 1 行,如果该 foo 的所有 bar1、bar2、bar3 状态均为 1,则应显示一个选中的复选框。如果该 foo 的状态值,则应显示一个未选中的复选框bar1、bar2 和 bar3 均为零。如果对于给定的 foo,不同的条具有不同的状态,我需要显示一些其他标记(比如问号。)
我的 sql 知识不足以完成这项任务。这可以在sql中完成吗?它在 Oracle 中,如果这有所作为的话。我在想我可能必须将它吸收到 perl 中并检查那里的条件,但我对这个想法不满意。
最佳答案
在 T-SQL 中我会这样做:
create table mytable (foo nvarchar(128), bar nvarchar(128), status int)
go
select foo, (MAX(status) + MIN(status)) as status
from mytable
group by foo
然后在客户端应用程序中,如果所有未选中,则结果状态值将为 0,如果某些已选中,则为 1,如果全部选中,则为 2
关于sql - 数据库查询。如何在单行上捕获 'mixed' 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6258055/