2009-07-29 9 views
2

Sybase ISQL 9データベースの "a"と "b"の両方の列に異なる値を持つ行の数を数えようとしています。複数の異なる列の行を数える

a b

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

次の構文のようなものがいいだろう:

SELECT COUNT(DISTINCT a, b) FROM MyTable 

しかし、これがない私は、次のデータセットが答え "4" を生成しますある意味何

作業。

私は解決策持っています:

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

をしかし、このクエリを構築するすっきり方法がある場合、私は不思議でしたか?これは、あなたはを参照することができます(別の答えで述べたように文字列を連結する以外に)簡単な方法で行うことができない理由の詳細については

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

このGoogleはポストを回答:についてどのように

+0

は何ですか "C = 'foo' で" –

+0

のC = 'fooがちょうどでした私が関心のないテーブルに他の行があることを示しています。 –

答えて

2

あなたが連結し、このような1つの文字列(TSQL、Sybaseの中に非常に似てうまくいけば何かに一緒にbの可能性:?

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

aまたはbがカンマを含む文字列の場合 – soulmerge

+0

真、整数であると仮定していました。区切り文字は "{RANDOM_DELIM}"のようなものを使うことができます。適切な区切り文字を決める場合は – AdaTheDev

+0

私が興味を持っているデータはint型で保存されていますので、 ! –

関連する問題