Wading through more 'obfuscated' code and refactoring for understanding. Thought this bit was straight forward till I hit the third case statement. Can I assume that quoted columns refer to the t_g3 view?
The original FROM portion posted below.
FROM
[GCCC_ProjectServer_Reporting].dbo.MSP_EpmProject_UserView AS p
INNER JOIN
(SELECT
t_g3.ProjectUID as ProjectUID
,CASE WHEN @vLastBaseline = 'BL1' AND t_g3.TaskBaseline1StartDate IS NOT NULL THEN t_g3.TaskBaseline1StartDate
WHEN @vLastBaseline = 'BL1' AND t_g3.TaskBaseline1StartDate IS NULL THEN t_g3.TaskBaseline5StartDate
WHEN @vLastBaseline = 'BL2' AND t_g3.TaskBaseline2StartDate IS NOT NULL THEN t_g3.TaskBaseline2StartDate
WHEN @vLastBaseline = 'BL2' AND t_g3.TaskBaseline2StartDate IS NULL THEN t_g3.TaskBaseline5StartDate
WHEN @vLastBaseline = 'BL3' AND t_g3.TaskBaseline3StartDate IS NOT NULL THEN t_g3.TaskBaseline3StartDate
WHEN @vLastBaseline = 'BL3' AND t_g3.TaskBaseline3StartDate IS NULL THEN t_g3.TaskBaseline5StartDate
WHEN @vLastBaseline = 'BL4' AND t_g3.TaskBaseline4StartDate IS NOT NULL THEN t_g3.TaskBaseline4StartDate
WHEN @vLastBaseline = 'BL4' AND t_g3.TaskBaseline4StartDate IS NULL THEN t_g3.TaskBaseline5StartDate
ELSE t_g3.TaskBaseline1StartDate
END AS g3_LastBaseline
,CASE WHEN @vLastBaseline = 'BL1' AND t_cs.TaskBaseline1StartDate IS NOT NULL THEN t_cs.TaskBaseline1StartDate
WHEN @vLastBaseline = 'BL1' AND t_cs.TaskBaseline1StartDate IS NULL THEN t_cs.TaskBaseline5StartDate
WHEN @vLastBaseline = 'BL2' AND t_cs.TaskBaseline2StartDate IS NOT NULL THEN t_cs.TaskBaseline2StartDate
WHEN @vLastBaseline = 'BL2' AND t_cs.TaskBaseline2StartDate IS NULL THEN t_cs.TaskBaseline5StartDate
WHEN @vLastBaseline = 'BL3' AND t_cs.TaskBaseline3StartDate IS NOT NULL THEN t_cs.TaskBaseline3StartDate
WHEN @vLastBaseline = 'BL3' AND t_cs.TaskBaseline3StartDate IS NULL THEN t_cs.TaskBaseline5StartDate
WHEN @vLastBaseline = 'BL4' AND t_cs.TaskBaseline4StartDate IS NOT NULL THEN t_cs.TaskBaseline4StartDate
WHEN @vLastBaseline = 'BL4' AND t_cs.TaskBaseline4StartDate IS NULL THEN t_cs.TaskBaseline5StartDate
ELSE t_cs.TaskBaseline1StartDate
END AS cs_LastBaseline
,CASE WHEN @vLastBaseline = 'BL1' AND t_g3.TaskBaseline1StartDate IS NOT NULL THEN 'TaskBaseline1StartDate'
WHEN @vLastBaseline = 'BL1' AND t_g3.TaskBaseline1StartDate IS NULL THEN 'TaskBaseline5StartDate'
WHEN @vLastBaseline = 'BL2' AND t_g3.TaskBaseline2StartDate IS NOT NULL THEN 'TaskBaseline2StartDate'
WHEN @vLastBaseline = 'BL2' AND t_g3.TaskBaseline2StartDate IS NULL THEN 'TaskBaseline5StartDate'
WHEN @vLastBaseline = 'BL3' AND t_g3.TaskBaseline3StartDate IS NOT NULL THEN 'TaskBaseline3StartDate'
WHEN @vLastBaseline = 'BL3' AND t_g3.TaskBaseline3StartDate IS NULL THEN 'TaskBaseline5StartDate'
WHEN @vLastBaseline = 'BL4' AND t_g3.TaskBaseline4StartDate IS NOT NULL THEN 'TaskBaseline4StartDate'
WHEN @vLastBaseline = 'BL4' AND t_g3.TaskBaseline4StartDate IS NULL THEN 'TaskBaseline5StartDate'
ELSE 't_cs.TaskBaseline1StartDate'
END AS LastBaselineSource
FROM GCCC_ProjectServer_Reporting.dbo.MSP_EpmTask_UserView AS t_g3
LEFT JOIN
GCCC_ProjectServer_Reporting.dbo.MSP_EpmTask_UserView AS t_cs
ON t_g3.ProjectUID = t_cs.ProjectUID
AND t_cs.TaskIsActive = 1
AND t_cs.TaskName = 'Construction Start'
WHERE t_g3.TaskIsActive = 1
AND t_g3.TaskName = 'Gate 3 Approval'
) as BL
ON p.ProjectUID = BL.ProjectUID
code here
Another example where single quotes are used as column alias wrappers. Quite common throughout the code base. This is why I was thinking the above issue was column alias related.
SELECT p0.[Project No],
p0.ProjectName,
isnull(p0.Budg_Centre + ' - ' + p0.Budg_CentreName,' - ') as 'BudgetCentre',
p0.Budg_Centre,p0.Budg_CentreName,
CASE WHEN DATEDIFF(d,p0.ProjectStartDate,p0.ProjectFinishDate) > 40
THEN 'Scheduled'
ELSE 'Unscheduled' END as 'Schedule Status',
CapFor.Forecasting_Month,
CapFor.Forecasting_Year,
CapFor.FinancialYr,
p0.ProjectOwnerName,
The 3rd case is repeating the same logic as the first case but reporting what column that first case selected as a string.
Single quotes ( '
) are only ever string literal delimiters 1 .
Double quotes ( "
) may be used as string delimiters or to quote identifiers (in the same way that []
can be used to quote identifiers). How they should be interpreted depends on the current setting for QUOTED_IDENTIFIER
.
So no, do not replace the strings with column references.
1 I'm bound to have forgotten some edge case when I make such a confident assertion, aren't I.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.