select distinct
LsPO AS 'PO Listed',
LsSuID AS 'Supplier ID',
LSShipSpeed AS 'Ship Speed',
count('PO Listed') as 'PO Count'
From csn_order..TblLoadShipping
where
datalength(LSPO) = '10'
and LsDateLoaded >= DATEADD(day,-1, GETDATE())
and lspo like 'CS%'
and lsshipspeed is not null
group by lspo, lssuid, lsshipspeed
order by 'PO Listed' desc
在PO列出中,我获得了一次PO,但PO Count列仍然给出了141的结果,计算了PO在where或不同过滤器之前的实例数。
也许我完全以错误的方式解决这个问题。
以下是一些结果:
CS89980125 14347 153 1
CS89980122 22471 1 1
CS89980113 420 153 1
CS89980113 420 GR 1
我喜欢最后一列,即计数,以表示CS89980113出现两次
答案 0 :(得分:1)
如果您想要列的非空值数,可以使用
select count(your_col1)
from your_table
如果您需要列的非空值的相对计数,则可以使用
第二列select your_col2, count(your_col1)
from your_table
group by your_col2
如果您在计数中使用的同一列中使用分组,则根本不会得到一个分组..
如果您需要计算不同的值,可以在count(distinct your_col1)
函数
基于您的示例,您不能在select子句中使用别名,因此您无法使用
count('PO Listed') as 'PO Count'
但你应该使用
count(LsPO ) as 'PO Count'
并且对于不同的值,您应该使用
count(distinct LsPO ) as 'PO Count'