Ceci est mon requête SQL:en utilisant une partie SELECT OUTER 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'
La requête fonctionne correctement, mais il est un peu lent. C'est à cause de ma deuxième OUTER JOIN
. Je dois rejoindre la vue par Startdatum
(c'est sélectionné à la ligne 4). Comme ce n'est pas un vrai nom de colonne, je ne peux pas l'utiliser directement dans mon OUTER JOIN
. Cela signifie que la fonction [pp].dbo.WORKINGDAYADD()
doit être déclenchée deux fois (une fois dans ma sélection ce qui n'est pas un problème, et une fois dans mon OUTER JOIN
qui est un double travail).
Je pourrais écrire une procédure stockée et utiliser le résultat de la fonction [pp].dbo.WORKINGDAYADD()
dans une variable, mais ce n'est pas disjocable. Est-il possible d'utiliser Startdatum dans mon expression OUTER JOIN
? Ou dois-je vraiment utiliser une procédure stockée pour cela?
D'où vient la table 'Startdag_backwards'? – GarethD
@yvytty Vous voulez le rejoindre avec une vraie colonne? C'est parce qu'il n'y a pas de vraie colonne avec cette valeur, je dois calculer la bonne date puis la rejoindre – Jovano
@GarethD 'Startdag_backwards' vient de' [pp] .dbo.VW_BEWERKINGSTRUCTUUR', je vais éditer mon post et ajouter quelques aliasses pour le rendre clair – Jovano