计算多个不同列的行数

时间:2009-07-29 09:53:14

标签: sql

我正在尝试计算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

但我想知道是否有更简洁的方法来构建此查询?

2 个答案:

答案 0 :(得分:4)

怎么样:

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

有关为什么不能以更简单的方式完成此操作的更多信息(除了在不同答案中提到的串联字符串之外),您可以参考此Google Answers帖子:Sql Distinct Count

答案 1 :(得分:2)

你可以将a和b连接成一个这样的字符串(TSQL,希望在Sybase中非常相似:

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