Sql Server案例计数/不计数
我正在尝试选择通过我们的数据库的订单数量 从订单中,我想检索3个部分Sql Server案例计数/不计数,sql,sql-server,Sql,Sql Server,我正在尝试选择通过我们的数据库的订单数量 从订单中,我想检索3个部分 订单总数 可销售订单的订单计数 仅包含免费样品的订单计数 如果订单仅包含免费样品,则该订单的总值自然为0,如果是正常订单,总值自然为>0 “总额”字段采用十进制格式 这就是我目前正在努力做的事情 COUNT(gross) as 'TotalOrders', COUNT(case when gross = 0.00 THEN null else gross end) as 'OrderCount', COUNT(case wh
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',
如果订单具有正的gross
值,如何使COUNT()
函数仅增加1
我正在SQLServer中执行此操作
我的结果显示,TotalOrders
是1
,但是OrderCount
和Samples
显示为0
谢谢。这就是你想要的吗
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
将与样本相同将样本(计数(当总量>0.00=然后1个值为空时)转换为int)作为样本您建议的公式应该有效
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
求和而不是计数:Sum(当总量大于0.00时,则为1,否则为0结束)作为“OrderCount”,如果TotalOrders
的值为1,并且OrderCount
和Samples
的值为0
,则表明这一行的值为<0.00
。这正是我想要的。我没有想到要用总和,因为我也在用它来计算那个时期的总毛额。您以一种巧妙的方式使用它,根据具体情况临时更改值。为答案干杯,但这似乎是一种非常复杂的方法。对于SQL来说,这是一个全新的问题,与下面的答案(已接受的答案)相比,它有什么优势?似乎使用select几次会产生负面的性能?我的“with Test…”是示例数据,向您展示您的计数方法确实检索到了预期值2