在 MSSQL 中计算列和行中的相同值
Count same values in columns and rows in MSSQL
Products Orders
------------ ---------------------
PID | Name | OID | pid1 | pid2 |
------------ ---------------------
1 | A100 | 1 | 2 | 1 |
2 | B100 | 2 | 3 | 1 |
3 | C100 | 3 | 2 | 2 |
Output
----------
A100 | 2
B100 | 3
C100 | 1
我想计算同一行不同列中的相同产品。代码示例会很棒。
谢谢。
您可以计算两次,然后对结果求和:
with cteOrderCount
AS
(
select p.Name as Name
, count(o.OID) as orderCount
from Products p
inner join Orders o
on p.pid = o.pid1
group by p.Name
union all
select p.Name
, count(o.OID) as orderCount
from Products p
inner join Orders o
on p.pid = o.pid2
group by p.Name
)
select Name
, sum(OrderCount) as TotalOrders
from cteOrderCount
group by Name
Products Orders
------------ ---------------------
PID | Name | OID | pid1 | pid2 |
------------ ---------------------
1 | A100 | 1 | 2 | 1 |
2 | B100 | 2 | 3 | 1 |
3 | C100 | 3 | 2 | 2 |
Output
----------
A100 | 2
B100 | 3
C100 | 1
我想计算同一行不同列中的相同产品。代码示例会很棒。
谢谢。
您可以计算两次,然后对结果求和:
with cteOrderCount
AS
(
select p.Name as Name
, count(o.OID) as orderCount
from Products p
inner join Orders o
on p.pid = o.pid1
group by p.Name
union all
select p.Name
, count(o.OID) as orderCount
from Products p
inner join Orders o
on p.pid = o.pid2
group by p.Name
)
select Name
, sum(OrderCount) as TotalOrders
from cteOrderCount
group by Name