簡體   English   中英

SQL連接1個表和2個表值函數返回的表

[英]SQL join 1 table and 2 table-valued function returned tables

我有一個帶有表的數據庫,我將其稱為 Table1。 該數據庫還有 2 個表值函數。 第一個函數返回一個表,我將調用 Table2,第二個函數返回一個表,我將調用 Tabel3。 還有第 4 個表,我將其稱為 Table4,我想將記錄插入其中。

表 1 有以下字段:

Fileno
Description
GeneralCode

第一個函數接受 2 個參數(Table1.Fileno,Table1.Description)並返回 Table2,它具有以下字段:

FileNum
Desc1
Desc2
Desc3

第二個函數接受 2 個參數(Table1.Fileno,Table1.GeneralCode)並返回 Table3,它具有以下字段:

FileNum
Code1
Code2

第四個表 Table4 具有以下字段:

CaseNum
Desc1
Desc2
Desc3
Code1
Code2    

我寫了以下有效的查詢:

DELETE FROM Table4
INSERT INTO Table4(CaseNum, Desc1, Desc2, Desc3)
SELECT Fileno, Desc1, Desc2, Desc3
FROM Table1 
CROSS APPLY function1(FileNo, Description)

此查詢運行,調用函數(返回一個表),並將數據插入 Table4。

現在,我需要修改查詢以調用第二個函數,該函數將返回另一個表,並將該數據插入 Table4。 我有以下代碼:

DELETE FROM Table4
INSERT INTO Table4(CaseNum, Desc1, Desc2, Desc3, Code1, Code2)
SELECT m.Fileno, d.Desc1, d.Desc2, d.Desc3, c.Code1, c.Code2
FROM Table1 m
INNER JOIN function1(m.Fileno, m.Description) d ON d.FileNum = m.Fileno
LEFT OUTER JOIN function2(m.Fileno, m.GeneralCode) c ON c.FileNum = m.Fileno;

但是這段代碼不起作用。 Intellisense 會突出顯示我傳遞給函數的字段,所以顯然我不能以這種方式引用這些字段,但我不確定如何解決這個問題。

任何幫助是極大的贊賞。 謝謝!

您的查詢應該類似於以下內容。

您可以應用多個表表達式或 TVF,您在示例查詢中顯示了一個外部聯接,因此在您可能(大概)沒有返回行的地方使用外部應用,然后在必要時處理 NULL。

select m.Fileno, 
    f1.Desc1, f1.Desc2, f1.Desc3, 
    IsNull(f2.Code1,''), IsNull(f2.Code2,'')
from Table1 m
cross apply function1(m.FileNo, m.Description)f1
outer apply function2(m.FileNo, m.GeneralCode)f2;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM