這是我的SQL查詢:使用外SELECT部分JOIN
SELECT
b.MaakArtikel,
b.Bewerking,
[pp].dbo.WORKINGDAYADD('2013-06-27 00:00:00.000',0-b.Startdag_backwards) AS Startdatum,
i.Class_06 AS Afdeling,
b.Minuten*10+ISNULL(br.Tijd,0) AS Minuten,
1+ISNULL(br.Orders,0) AS Aantal
FROM [pp].dbo.VW_BEWERKINGSTRUCTUUR b
LEFT OUTER JOIN [211].dbo.Items i
ON b.MaakArtikel = i.ItemCode
LEFT OUTER JOIN [pp].dbo.VW_BEZETTING_RAW br
ON [pp].dbo.WORKINGDAYADD('2013-06-27 00:00:00.000',0-b.Startdag_backwards) = br.Start
AND i.Class_06 = br.Afdeling
WHERE MaakArtikel = 'HT 10.038'
查詢正常工作,但它是一個有點慢。這是因爲我的第二個OUTER JOIN
。我必須加入Startdatum
(這是在第4行選擇)的觀點。由於它不是真實的專欄名稱,因此我無法直接在我的OUTER JOIN
中使用它。這意味着功能[pp].dbo.WORKINGDAYADD()
必須被觸發兩次(一次在我的選擇中,這不是問題,一次在我的OUTER JOIN
這是雙重工作)。
我可以編寫一個存儲過程,並將函數[pp].dbo.WORKINGDAYADD()
的結果用於變量,但這不是可悲的。有沒有在我的OUTER JOIN
表達式中使用Startdatum的方法?或者我真的必須爲此使用存儲過程嗎?
「Startdag_backwards」來自哪個表? – GarethD
@yvytty你的意思是加入一個真正的專欄?這是因爲沒有真正的列值,我必須計算正確的日期然後加入它 – Jovano
@GarethD'Startdag_backwards'來自'[pp] .dbo.VW_BEWERKINGSTRUCTUUR',我將編輯我的帖子並添加一些別名清楚地說明這一點 – Jovano