【问题标题】:create column in for each different value in the table为表中的每个不同值创建列
【发布时间】:2012-07-23 20:14:08
【问题描述】:

假设我有一个结构如下的表(使用 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

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

【问题讨论】:

    标签: sql sql-server pivot


    【解决方案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)
    

    或类似的东西。

    【讨论】:

    • 如果您绝对想要50100 的列标题,只需将as num050 更改为as [50.00]。括号将允许您使用所有数字作为列标题。
    • @user1319343,如果这是解决方法,请将其标记为正确答案,以备日后参考。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多