我主要是一個演示/邏輯層開發人員,不要亂用SQL,但我有一個問題,並且想知道在SQL中是不可能的因爲它不是一個完整的編程語言。SQL Server根據返回的數據動態地更改SELECT中的WHERE子句
- 我有一個連有
- 在另一個表中的CompanyID字段的ContactID,將CompanyID連接到公司名稱
- 我試圖創建一個返回一個接觸ID,並在SELECT語句獨立專欄,該聯繫人的所有公司的集合(按名稱)。
EG
ContactID - CompanyID - CompanyName
***********************************
1 001 Lol
1 002 Haha
1 003 Funny
2 002 Haha
2 004 Lmao
我想回到
ContactID - Companies
*********************
1 Lol, Haha, Funny
2 Haha, Lmao
我發現在每次與一個使用ContactID這樣做的邏輯:
SELECT x.ContactID, substring(
(
SELECT ', '+y.CompanyName AS [text()]
FROM TblContactCompany x INNER JOIN TblCompany y ON x.CompanyID = y.CompanyID WHERE x.ContactID = 13963
For XML PATH (''), root('MyString'), type
).value('/MyString[1]','varchar(max)')
, 3, 1000)
[OrgNames] from TblContact x WHERE x.ContactID = 13963
,你可以看到這裏,我在ContactID 13963中硬編碼,它只需要返回co這個人所關聯的公司。
問題是,當我想要在更大規模的SELECT(在一個完整的ContactID的整個表上)返回這個聚合信息PER ROW時。我想擁有x.ContactID = (this.ContactID)
但我不知道如何!
如果失敗了,我可以運行一條語句來返回一個ContactID的列表,然後在同一個StoredProc中運行另一條語句,即LOOPS通過此ContactID的列表(本質上執行第二條語句x次,其中x =沒有ContactID) ?
任何幫助大大讚賞。
我想我愛你 - 這真是血腥! 工作非常好,讓我真正對學習更復雜的SQL感興趣! – 2014-08-28 11:26:34