WITH句の中でT1を使用しているので、指定されたクエリはどのように正しいですか?T1はWITH内の句が完了した後に宣言されます。問い合わせの上次のSQLクエリはどのように機能していますか?
WITH T1(Emp,Manager,Salary) AS
(
SELECT tt2.[Emp],tt2.[Manager],tt2.[Salary]
FROM [YourTable] AS tt1
RIGHT OUTER JOIN [YourTable] AS tt2 ON tt1.[Emp]=tt2.[Manager]
WHERE tt1.[Emp] is NULL
UNION ALL
SELECT r.[Emp],T1.[Manager],r.[Salary]
FROM [YourTable] AS r
INNER JOIN T1 ON r.[Manager]=T1.[Emp]
)
SELECT [Manager],SUM([Salary]) AS Salary
FROM T1
GROUP BY [Manager]
ORDER BY SUM([Salary]) DESC
次の質問に答えている - 私は列(従業員、マネージャー、給与)を持つテーブルがある
。 1つのSQLでトップレベルのマネージャーに対応するすべての従業員の総給与を計算する必要があります。例えば
Input table is :
Emp Manager Salary
A T 10
B A 11
C F 13
D B 5
結果は次のようになります。
Top-Lvl Manager Salary(agg)
T 26
F 13
マネージャ - 従業員の階層化は、複数のレベルに行くことができます。
私は互換性のないデータベースタグを削除しました。実際に使用しているデータベースにタグを付けてください。 –
このクエリは、CTE(Comman Table Expression)を使用して構築されています。詳細については、このリンクを参照してください - https://www.codeproject.com/Articles/275645/CTE-In-SQL-Server – LogicalDesk