我正在尝试编写一个查询,该查询返回多个表中给定值的计数。
现在,我正在使用以下查询
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_]
被推到源表中的选择中。检查执行计划以确保。
归档时间: |
|
查看次数: |
1170 次 |
最近记录: |