在 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