Informix 如何计算不同的多个列

Informix 如何计算不同的多个列,informix,Informix,有人知道如何使用不同但有多个列的记录数吗 我想要的一个例子是: SELECT COUNT(DISTINCT a, b, c, d) FROM temp 我使用的是Informix。这样做可以吗(假设Informix的版本足够新): 内部选择生成列a、b、c和d的不同组合列表;外部选择统计内部选择生成的行数 您不太可能没有足够新的Informix版本 不幸的是,我有Informix的第9版,这对我不起作用 我希望我不是那么有先见之明——您没有足够新的Informix版本。如果您使用的是过时的In

有人知道如何使用不同但有多个列的记录数吗

我想要的一个例子是:

SELECT COUNT(DISTINCT a, b, c, d)
FROM temp
我使用的是Informix。

这样做可以吗(假设Informix的版本足够新):

内部选择生成列
a
b
c
d
的不同组合列表;外部选择统计内部选择生成的行数

您不太可能没有足够新的Informix版本


不幸的是,我有Informix的第9版,这对我不起作用

我希望我不是那么有先见之明——您没有足够新的Informix版本。如果您使用的是过时的Informix版本,那么在提出问题时说出哪个版本很重要。假设您使用的是9.40(9.x系列的最新版本,于2003年首次发布),而不是一些更古老的版本,如9.00(从1996年开始),那么自您的版本发布以来,已经发布了10.00、11.10、11.50和11.70版本,并且这些版本也都已从支持中删除。目前支持的版本为12.10和14.10。你应该升级到14.10。(如果您询问更多有关Informix的问题,请在问题中包含您的版本号。您将在第一关中得到更好的答案。)

最简单的选择是使用:

SELECT DISTINCT a, b, c, d FROM temp INTO TEMP distinct_a_b_c_d;
SELECT COUNT(*) FROM distinct_a_b_c_d;
DROP TABLE distinct_a_b_c_d;
鉴于您使用的是9.x版,如果存在不同的\u a\u b\u c\d,您甚至不能使用保护性的
下拉表在序列之前删除预先存在的表


我不确定是否有任何可行的替代方法来创建中间结果表(必要时,它可能是一个永久表,但由于各种原因,这是有问题的)。

不幸的是,我有informix版本9,这对我不起作用:(我建议在版本9.40或更早版本中使用其他SQL语法。当版本号如此过时时,请在问题中包含您的版本号-您会得到更好的答案。您应该升级到14.10。我知道这超出了您的控制范围,但您使用的是2003年首次发布的软件。它转到EOS(服务结束-不支持)打开。
SELECT DISTINCT a, b, c, d FROM temp INTO TEMP distinct_a_b_c_d;
SELECT COUNT(*) FROM distinct_a_b_c_d;
DROP TABLE distinct_a_b_c_d;
select count(*) 
from table (
    multiset(select distinct a, b, c, d from temp)
) a;