J'ai données dans une table de MSSQL (TableB) où le format [dbo] .tableB.myColumn change après une certaine date ...Combinaison SQL dynamique/conditionnelle?
Je fais simple Inscrivez-vous pour cette table ..
Select [dbo].tableB.theColumnINeed from [dbo].tableA
left outer join [dbo].tableB on [dbo].tableA.myColumn = [dbo].tableB.myColumn
Cependant, j'ai besoin de joindre, en utilisant une mise en forme différente, basée sur une colonne de date dans le tableau A ([dbo] .tableA.myDateColumn).
Quelque chose comme ...
Select [dbo].tableB.theColumnINeed from [dbo].tableA
left outer join [dbo].tableB on [dbo].tableA.myColumn =
IF [dbo].tableA.myDateColumn > '1/1/2009'
BEGIN
FormatColumnOneWay([dbo].tableB.myColumn)
END
ELSE
BEGIN
FormatColumnAnotherWay([dbo].tableB.myColumn)
END
Je me demande s'il y a une façon de le faire .. ou une meilleure façon, je ne pense pas à aborder ce ..
Ma suggestion serait de corriger les données car l'optimiseur ne tiendra pas compte des index avec ces fonctions dans la condition JOIN – SQLMenace
Oui mais parfois vous ne pouvez pas corriger les données ;-) – JoshBerke
C'est la même colonne, je la réparerais, mettre une CHECK CONTRAINT dessus pour que ça ne se reproduise pas car tôt ou tard quelqu'un crierait que la performance est inacceptable et ensuite quoi? – SQLMenace