2つのCOUNT句を1つのSQLで実現するには?

解決


AI  2004-05-21 04:20:54  No: 113392  IP: [192.*.*.*]

よろしくお願いします。
同じテーブルの異なるフィールドの個数を、
それぞれカウントします。
2つのCOUNTを含むSQLを記述すれば実現できますが、
これをどうにかして1つのSQLで実現したいのですが、
どうすればよいのでしょうか。
(できましたら、UNION以外の方法をお教えください。)

SELECT COUNT(CAR) AS くるま
FROM T_ENGIN

SELECT COUNT(BIKE) AS バイク
FROM T_ENGIN

編集 削除
特攻隊長まるるう  2004-05-21 08:35:13  No: 113393  IP: [192.*.*.*]

思いっきりSQLの質問だね。…板違いだけど思い切りは気持ち良いよ(TT)

普通に
SELECT COUNT(CAR) AS くるま, COUNT(BIKE) AS バイク
FROM T_ENGIN
ではダメだったの?

編集 削除
特攻隊長まるるう  2004-05-21 10:52:20  No: 113394  IP: [192.*.*.*]

ってゆーか、これ意味無いね。あー、Null かどうかかで判断すれば良いのか…
SQL Server だと
SELECT SUM( CASE WHEN CAR  Is Null THEN 0 ELSE 1 END) AS くるま,
   SUM( CASE WHEN BIKE  Is Null THEN 0 ELSE 1 END) AS バイク
FROM T_ENGIN
でいけますが…他のだと??

編集 削除
特攻隊長まるるう  2004-05-21 11:01:20  No: 113395  IP: [192.*.*.*]

あれ。Null だと
> SELECT COUNT(CAR) AS くるま, COUNT(BIKE) AS バイク
> FROM T_ENGIN
で取れてくるね(汗)。
もっと特別な条件ですか?

編集 削除
特攻隊長まるるう  2004-05-24 11:40:00  No: 113396  IP: [192.*.*.*]

ま、返答無いですが、Jet(Access) で使えそうな文を見つけたので
アップします(自分のために(汗))
…いや、
> SELECT COUNT(CAR) AS くるま, COUNT(BIKE) AS バイク
> FROM T_ENGIN
で良いんですけどね(汗)。いろいろ他の条件に変えると
使い勝手が良かったので…。

SELECT Int(Sum(IIf(IsNull([CAR]),0,1))) AS くるま,
          Int(Sum(IIf(IsNull([BIKE]),0,1))) AS バイク
FROM T_ENGIN

編集 削除
魔界の仮面弁士  2004-05-24 13:11:06  No: 113397  IP: [192.*.*.*]

> 思いっきりSQLの質問だね。…板違いだけど思い切りは気持ち良いよ(TT)
(^_^;)

> あれ。Null だと
>> SELECT COUNT(CAR) AS くるま, COUNT(BIKE) AS バイク
>> FROM T_ENGIN
> で取れてくるね(汗)。
GROUP BYが無いので、それでもカウントできるのでしょう。

> Jet(Access) で使えそうな文を見つけたので
Oracleの場合なら、DECODE関数を併用できますね。

編集 削除
AI  2004-05-28 16:06:33  No: 113398  IP: [192.*.*.*]

皆様、ありがとうございます。
おかげさまで随分ソースがスッキリしました!(‐^▽^‐)

勉強になりました。

編集 削除