我的目標是計算並設置Entity
表中的家庭名稱字段,用於由2人組成的所有家庭。我使用SQL Server 2012中,我必須與工作模式是:根據家庭記錄設置家庭名稱字段
CREATE TABLE Entity
(
EID INT, --PK
PID INT, --FK to Person.[Person ID]
HouseholdID VARCHAR(50),
HouseholdName VARCHAR(300)
);
CREATE TABLE Person
(
[Person ID] INT,
FirstName VARCHAR(30),
LastName VARCHAR(30)
);
INSERT INTO Entity VALUES (1,1,'HH1',NULL);
INSERT INTO Entity VALUES (2,2,'HH1',NULL);
INSERT INTO Entity VALUES (3,3,'HH2',NULL);
INSERT INTO Entity VALUES (4,4,'HH2',NULL);
INSERT INTO Entity VALUES (5,5,'HH3',NULL);
INSERT INTO Person VALUES (1,'Jane', 'Doe');
INSERT INTO Person VALUES (2,'Joe', 'Doe');
INSERT INTO Person VALUES (3,'Sara', 'Dillin');
INSERT INTO Person VALUES (4,'Bill', 'Smith');
INSERT INTO Person VALUES (5,'Ted', 'Loner');
計算家喻戶曉的邏輯是這樣的: 如果兩個姓氏是這樣相同HouseholdID HH1
的家喻戶曉的名字應該是'Jane & Joe Doe'。如果姓氏不同,比如在HH2
它應該在格式「薩拉Dillin &比爾史密斯
我可以識別人,並讓他們爲了像這樣:
SELECT FirstName,LastName,HouseholdID
FROM Entity e
JOIN Person p ON p.[Person ID]=e.[PID]
WHERE HouseholdID IN --HHs of 2 people
(
SELECT DISTINCT HouseholdID
FROM Entity e
JOIN Person p ON p.[Person ID]=e.[PID]
GROUP BY HouseholdID HAVING COUNT(*)=2
)
ORDER BY HouseholdID
但我被困過去。從像C#這樣的過程語言,我知道如何解決這個問題,但速度很慢。我希望能夠以更快的SQL方式進行操作。
+1 DDL和樣本數據。如果有更多人這樣做,這將是非常好的。 –
您可以google [[連結行]](http://www.google.de/search?q=concatenate+rows+sql)。這就是你的問題所在。 – Nico