为表中的每个不同值创建列

时间:2012-07-23 20:14:08

标签: sql sql-server pivot

让我们说我有一个像这样结构的表(使用SQL服务器):

empID INT
payment INT

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

我如何执行select语句,以便结果集如下所示:

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

其中50.00和100.00是列标题,下面的数字是实际值。我知道我可以做到

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

但是,它会在自己的列中返回付款。我希望每个不同的付款值都在自己的列中。

1 个答案:

答案 0 :(得分: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)

或类似的东西。