0

假设我有一个结构如下的表(使用 SQL 服务器):

empID INT
payment INT

现在,每位员工只能获得 50.00 或 100.00 的报酬。有两名员工的收入为 50.00,三名员工的收入为 100.00。

我将如何做一个选择语句,以便结果集是这样的:

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 回答