我有一个表,我试图在选择上提取单个返回值,表示通过使用总和计算器启用或禁用表上的压缩,列值压缩必须为否,并且 auto_compressed 必须等于禁用。
以下是表中的示例数据:
partnum 1048577
dbsname rootdbs
owner informix
tabname sysdatabases
collate
dbsnum 1
compressed No
auto_compressed Disabled
partnum 1048577
dbsname rootdbs
owner informix
tabname
collate TBLSpace
dbsnum 1
compressed No
auto_compressed Disabled
partnum 1048577
dbsname rootdbs
owner informix
tabname sysdatabases
collate
dbsnum 1
compressed No
auto_compressed Enabled
partnum 1048577
dbsname rootdbs
owner informix
tabname sysdatabases
collate
dbsnum 1
compressed Yes
auto_compressed Disabled
您可以使用以下内容进行测试:
create table test (
partnum varchar(255),
dbsname varchar(255),
owner varchar(255),
tabname varchar(255),
collate varchar(255),
dbsnum varchar(255),
compressed varchar(255),
auto_compressed varchar(255));
insert into test values ('1048577','rootdbs','informix','','TBLSpace','1','No','Disabled');
insert into test values ('1048577','rootdbs','informix','sysdatabases','','1','No','Disabled');
insert into test values ('1048577','rootdbs','informix','sysdatabases','','1','No','Enabled');
insert into test values ('1048577','rootdbs','informix','sysdatabases','','1','Yes','Disabled');
我只想在一天结束时确定数据库中的所有记录是否压缩 = 否或 auto_compressed = 禁用,然后我想要一个返回说禁用或启用。
我把它放在一起,但我正在努力用值替换数字:
select
sum(case when Compressed != 'No' OR auto_compressed != 'Disabled' then 'Enabled' else 'Disabled' end) as Condition
from test
我在下面收到此错误消息:
367: Sums and averages cannot be computed for character columns.
我可以用数字替换这些值,它的工作原理如下:
select
sum(case when Compressed != 'No' OR auto_compressed != 'Disabled' then 1 else 0 end) as seven
from test
我相信我的案例陈述是不正确的,或者有更好的方法来做到这一点。我确实需要帮助,因为此时我的想法令人难以置信。
测试
我看到这也有效: