我有一個名為“Businesses”的父表,其中有兩個不同的相關/子表(Affiliates 和Employees)與一個業務相關但不直接相互關聯。
我想要一個 SQL 查詢,它將顯示所有企業、分支機構和員工,每個員工都有一個行專案。例如,給定具有 2 個附屬公司(A1 和 A2)和兩個員工(E1 和 E2)的業務“B1”,我希望查詢的結果類似于:
| 商業 | 附屬公司 | 示例# | 企業名稱 |
|---|---|---|---|
| B1 | A1, A2 | 1 | 約翰 |
| B1 | A1, A2 | 2 | 鮑勃 |
我得到的最接近的是輸出,如下所示:
| 商業 | 附屬公司 | 示例# | 企業名稱 |
|---|---|---|---|
| B1 | A1 | 1 | 約翰 |
| B1 | A1 | 2 | 鮑勃 |
| B1 | A2 | 1 | 約翰 |
| B1 | A2 | 2 | 鮑勃 |
但正如您所看到的,每個員工顯示兩次(每個附屬公司一次)。
關于如何達到預期結果的任何建議?
uj5u.com熱心網友回復:
使用 SQL Sever 2017 及更高版本:
WITH existing as (
-- your existing query goes here
)
SELECT Business, string_agg(Affiliates, ',') as Affiliates,
[Empl #], MAX([Empl Name]) As [Empl Name]
FROM existing
GROUP BY Business, [Empl #]
uj5u.com熱心網友回復:
你可以這樣做。
DECLARE @Sample TABLE ( business char(12), affiliates VARCHAR(25), empid int);
INSERT INTO @Sample VALUES
( 'B1', 'A1', 50 ),
( 'B1', 'A1', 80 ),
( 'B1', 'A2', 90 ),
( 'B1', 'A2', 50 );
SELECT O.business,
STUFF( (SELECT DISTINCT ', ' CAST(affiliates AS VARCHAR(25))
FROM @Sample I WHERE I.business = O.business FOR XML PATH('')
), 1, 2, '')
FROM @Sample O
GROUP BY O.business;
結果:

根據您的需要進行更改。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/435017.html
標籤:sql sql服务器 tsql sql-server-2016
