我有一个表,我正试图在select上提取一个返回值,表示启用或禁用表上的压缩,或者使用对压缩列值使用和计算器的方式禁用,必须是否,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我相信我的案例陈述是不正确的,或者有一个更好的方法这样做。我确实需要帮助,因为我的头脑在这一点上摇摆不定。
发布于 2020-05-20 09:35:55
测试
SELECT CASE SUM(CASE WHEN Compressed = 'Yes' AND auto_compressed = 'Compressed'
THEN 1
ELSE 0
END)
WHEN 0 THEN 'Disabled'
ELSE 'Enabled'
END AS Condition
FROM test发布于 2020-05-20 09:53:27
这也起作用,我看到:
select
case when seven > 0 then 'Enabled' else 'Disabled' end) as Compression
from (
select
sum(case when Compressed != 'No' OR auto_compressed != 'Disabled' then 1 else 0 end) as seven
from test
) ahttps://dba.stackexchange.com/questions/267510
复制相似问题