我有(按實際價值不過幾百萬行)像這2個表:如何在MS SQL Server中使用表函數結果?
items:
| X | Y |
---------
| 1 | 2 |
| 3 | 4 |
---------
details:
| X | A | B |
-------------
| 1 | a | b |
| 1 | c | d |
| 3 | e | f |
| 3 | g | h |
-------------
我要聚集一個表details
的幾行一行在另一個表items
顯示他們在這樣一個GridView :
| items.X | items.Y | details.A | details.B |
---------------------------------------------
| 1 | 2 | a, c | b, d |
| 3 | 4 | e, g | f, h |
---------------------------------------------
我已經讀過this和相關的問題,我知道GROUP_CONCAT,但我不允許客戶系統上安裝它。因爲我沒有機會在本地執行此操作,所以我創建了一個存儲函數(我可以創建該函數),該函數返回一個表,其中列X
,A
和B
。此功能迄今爲止工作正常,但我似乎沒有將這些列添加到我的結果集。
目前我試圖加入items
查詢的函數結果,在上面的示例中,join-criterion將是X
-列。我做了一個小例子,與AdventureWorks2012數據庫,其中包含一個表函數dbo.ufnGetContactInformation(@PersonID INT)
與[Person].[EmailAddress]
臺加入關於BusinessEntityID
:
SELECT
[EmailAddress]
-- , p.[FirstName]
-- , p.[LastName]
FROM
[Person].[EmailAddress] e
INNER JOIN
dbo.ufnGetContactInformation(e.[BusinessEntityID]) p
ON p.[PersonID] = e.[BusinessEntityID]
的2註釋行表示,我嘗試在現實中的事,但如果沒有評論,他們隱藏了實際的錯誤,我得到:
Event 4104, Level 16, Status 1, Line 6
The multi-part identifier 'e.BusinessEntityID' could not be bound.
我明白,在接合過程中存在的e.[BusinessEntityID]
沒有價值呢。所以我不能通過使用函數參數來選擇函數中的特定子集,無論如何這應該在連接標準中。此外,我不能讓該函數返回全部行或創建一個臨時表,因爲在我的特定情況下,這對於時間和空間來說都是非常慢和昂貴的。
是否有另一種方式來實現這樣的事情,2現有的表和表函數?
謝謝!這正是我正在尋找的。 –