我正在尝试计算Sybase ISQL 9数据库中“a”和“b”列中具有不同值的行数。
我的意思是,以下数据集将产生答案“4”:
a b1 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 :(得分: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