2009-07-29 48 views
2

我试图计算在Sybase ISQL 9数据库的“a”和“b”两列中具有不同值的行数。计算多个不同列的行

我的意思是,下面的数据集将产生答案 “4”:

a b

1 9 2 9 3 8 3 7 2 9 3 7

像下面的语法的东西将是很好:

SELECT COUNT(DISTINCT a, b) FROM MyTable 

但这并不工作。

我有一个解决方案:

SELECT COUNT(*) FROM 
    (SELECT a, b 
    FROM MyTable 
    WHERE c = 'foo' 
    GROUP BY a, b) SubTable 

但我不知道是否有构造此查询的更合适的方法?

+0

什么是 “c = '富'” – 2009-07-29 10:02:49

+0

C = '富' 只是以显示表中有其他行,我不感兴趣 – 2009-07-29 10:21:27

回答

2

你可以串连A和B一起进入1串像这样(TSQL,希望东西在Sybase非常相似:

SELECT COUNT(DISTINCT(STR(a) + ',' + STR(b))) 
FROM @YourTable 
3

如何:

SELECT COUNT(*) 
FROM (SELECT DISTINCT a, b FROM MyTable) 

有关为什么不能以简单的方式来完成(除了在不同的答案注意连接字符串),你可以参考更多信息,这个谷歌问答后:Sql Distinct Count