0

このように構造化されたテーブルがあるとしましょう(SQLサーバーを使用):

empID INT
payment INT

現在、各従業員には50.00または100.00のいずれかしか支払われません。2人の従業員が50.00を稼ぎ、3人が100.00を稼いでいます。

結果セットが次のようになるようにselectステートメントを実行するにはどうすればよいですか。

50.00   100
-----   -----
2       3

ここで、50.00と100.00は列ヘッダーであり、以下の数値は実際の値です。私は私ができることを知っています

SELECT payment, COUNT(*)
FROM Student
GROUP BY payment

しかし、それはそれ自身の列に支払いを返します。それぞれの異なる支払い額をそれぞれの列に入れたい。

4

1 に答える 1

1

方法は次のとおりです。

select sum(case when payment = 50.00 then 1 else 0 end) as num050,
       sum(case when payment = 100.00 then 1 else 0 end) as num100

ただし、浮動小数点数では、同等の比較を行うべきではありません。次のようなことを行うことをお勧めします。

sum(case when abs(payment - 50) < 0.001 then 1 else 0 end)

またはそのようなもの。

于 2012-07-23T20:18:58.277 に答える