我正在尝试选择通过数据库的订单数。
从订单中,我要检索3个部分
如果订单仅包含免费样品,则该订单的总价值自然为0
,如果为正常订单,则总价值自然为>0
总字段为十进制格式。
这是我目前正在尝试做的事情。
COUNT(gross) as 'TotalOrders',
COUNT(case when gross = 0.00 THEN null else gross end) as 'OrderCount',
COUNT(case when gross > 0.00 THEN gross else null end) as 'Samples',
如果订单的COUNT()
值为正,我如何才能使gross
函数仅增加1?
我正在SQLServer
我的结果显示TotalOrders
是1
但是 OrderCount
和Samples
显示为0
谢谢。
答案 0 :(得分:3)
这是您想要的吗?
sum(case when gross >= 0.00 then 1 else 0 end) as TotalOrders,
sum(case when gross = 0.00 then 1 else 0 end) as OrderCount,
sum(case when gross > 0.00 then 1 else 0 end) as Samples
您可能想要> 0.00
,但是TotalOrders
将与Samples
相同。
答案 1 :(得分:0)
作为样本广播(COUNT(CASE,当总值> 0.00 = THEN 1否则为NULL END)作为int)
答案 2 :(得分:0)
您建议的公式应该起作用
with test as (select 1 as gross union all select -1 as gross union all select 2)
SELECT COUNT(CASE WHEN gross > 0.00 THEN gross ELSE null END) as 'Samples' from test