计算多个表中值的实例

dst*_*ley 5 sql-server t-sql

我正在尝试编写一个查询,该查询返回多个表中给定值的计数。

现在,我正在使用以下查询

SELECT COUNT(*) AS SL,
(
  SELECT COUNT(*)
  FROM [Sales Line Archive]
  WHERE [Document No_] = 123
) AS SLA
FROM [Sales Line]
WHERE [Document No_] = 123
Run Code Online (Sandbox Code Playgroud)

它返回一个结果,第一列是 Sales Line 中的行数,第二列是 Sales Line Archive 中的行数。

但是,我想使用IN子句请求多条记录,以便获得如下结果

Document No_, SL, SLA
1, 3, 0
2, 0, 4
3, 2, 1
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 10

一种方法是旋转

WITH CTE AS
(
SELECT [Document No_], 'SL' AS Source
FROM [Sales Line]
UNION ALL
SELECT  [Document No_], 'SLA' AS Source
FROM [Sales Line Archive]
) 
SELECT P.[Document No_],
       P.SL,
       P.SLA
FROM CTE
PIVOT (COUNT(Source) FOR Source IN ([SL], [SLA])) P
WHERE P.[Document No_] IN (1,2,3);
Run Code Online (Sandbox Code Playgroud)

我希望 on 的谓词[Document No_]被推到源表中的选择中。检查执行计划以确保。