Cra*_*mpo 5 sql sql-server sql-server-2014
我需要根据 orderlineNo 的不同来计算有多少个 orderline。每个 OrderNo 不同,但每个订单的 OrderLineNo 相同。即订单上有 9 行,则订单行编号将从 1 - 9 变化。同样,如果另一个订单上有 3 条订单行,则订单行编号将从 1 - 3 变化
但在 orderlineno 中可能有相同的订单号 - 为此我只想计算一次
例子:
OrderNo OrderLineNo
987654 1
987654 2
987654 2
987654 3
987654 4
987654 5
987654 6
987654 7
Run Code Online (Sandbox Code Playgroud)
这里的总订单行是 7。有两个订单行为 2,我希望它们只计算一次。
使用 SQL Server 2014 可以吗?
您可以将 DISTINCT 添加到 COUNT:
select OrderNo, count(distinct OrderLineNo)
from tab
group by OrderNo;
Run Code Online (Sandbox Code Playgroud)
或者如果 OrderLineNo 始终从 1 开始并且无间隙地增加:
select OrderNo, max(OrderLineNo)
from tab
group by OrderNo;
Run Code Online (Sandbox Code Playgroud)
编辑:
根据评论,这不是每个 OrderNo 的计数,而是全局计数。您需要使用派生表:
select count(*)
from
(select distinct OrderNo, OrderLineNo
from tab
) as dt;
Run Code Online (Sandbox Code Playgroud)
或者
select sum(n)
from
(select OrderNo, max(OrderLineNo) as n
from tab
group by OrderNo
) as dt;
Run Code Online (Sandbox Code Playgroud)
或者
select sum(Dist_count)
from
( select OrderNo,count(distinct OrderLineNo) as Dist_count
from Table1
group by OrderNo
) as dt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8208 次 |
最近记录: |