【问题标题】:SQL - Count( ) issueSQL - 计数()问题
【发布时间】:2009-02-06 00:02:51
【问题描述】:

我有一张带有费用/信用列的表格:

Item | PriceVal | CostVal | CHARGE_CODE
1        5             3         CH
2        8             5         CH
1       -5            -3         CR
3        7             1         CH
4       15            10         CH
1        5             3         CH

我有查询需要获取 NET 价格和成本,但我也对 NET 费用感兴趣。现在我有:

SELECT Item, SUM(PriceVal), SUM(CostVal)
FROM Table
GROUP BY Item

如何获得另一列的值

COUNT(SUM(CHARGE_CODE=CH)-SUM(CHARGE_CODE=CR))

我很茫然。

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    count() 将为每个不为空的值计算一个,所以我不认为这正是你想要的。取出计数,然后取出

    sum(case when charge_code = CH then costval else 0 end) 
    - sum(case when charge_code = 'CR' then costval else 0 end)
    

    【讨论】:

    • 是的,差不多就是这样。我问题的最后一部分不是很清楚。我只是想要一个计数,所以我稍微修改了你的: sum(case when charge_code = CH then 1 else 0 end) - sum(case when charge_code = 'CR' then 1 else 0 end) 谢谢!
    • 好吧,如果你想要一个计数,你实际上可以这样做: count(case when charge_code = 'CH' then 1 end) 当值不为 null 和 0 时,计数将计数 1什么时候。
    【解决方案2】:

    由于您已经在表格中输入了美元值作为负数,您可以使用简单的公式:

    select
        Item,
        sum(PriceVal),
        sum(CostVal),
        sum(PriceVal-CostVal)
    from Table
    group by Item
    

    我认为您不应该减去信用项目,因为它们已经是负数。

    如果您确实想要交易的净计数

    select
        Item,
        sum(PriceVal),
        sum(CostVal),
        sum(case when charge_code = 'CH' then 1 else 0 end) -
            sum(case when charge_code = 'CR' then -1 else 0 end)
    from Table
    group by Item
    

    或者,如果只有两个收费代码,则替换:

    sum(case when charge_code = 'CH' then 1 else -1 end)
    

    最后一列。

    【讨论】:

      【解决方案3】:

      不是 100% 确定您想要什么,但您只能像这样计算某些行:

      SELECT COUNT(IF(CHARGE_CODE=CH,1,NULL)) ...
      

      并且类似地对某些行中的某些值求和,如下所示:

      SELECT SUM(IF(CHARGE_CODE=CH,PriceVal,0)) ...
      

      【讨论】:

        猜你喜欢
        • 2011-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多