-2
上,但不是在2008年工作的下面的查詢工作的SQL Server 2014就好了,但是SQL Server 2008上以下錯誤回報:SQL查詢的SQL Server 2014 R2
Mens. 102, Nivel 15, Estado 1, Línea 1
Incorrect syntax near '='.
Mens. 156, Nivel 15, Estado 1, Línea 4
Incorrect syntax near the keyword 'AS'.
Mens. 156, Nivel 15, Estado 1, Línea 7
Incorrect syntax near the keyword 'AS'.
這是查詢(有點長,不好意思):
SELECT per_agrup.COEMPRESA AS 'Empresa',
per_agrup.DCCENTROS AS 'Centre',
per_agrup.DCDIVISIONES AS 'Divisió',
per_agrup.DCGRUPPROF AS 'Grup professional',
per_agrup.DCUNIPROD AS 'Direcció/Àrea',
per_agrup.DCPUESTOTRABAJO AS 'Lloc de treball',
per_agrup.DCCATEGORIA AS 'Categoria',
per_agrup.DCINCIDENCIA AS 'Motiu',
Sum(IIf(per_agrup.COMPERSONAL=1
And per_agrup.COCOBERTURA Is Not Null,
IIf(per_cober_agrup.COCOBERTURA Is Not Null And per_cober_agrup.COMPERSONAL=1,Round(per_cober_agrup.SumaDeHORAS/60.00,2),
IIf(per_cober_agrup.COCOBERTURA Is Null,Round(per_agrup.SumaDeHORAS/60.00,2),0)),Round(per_agrup.SumaDeHORAS/60.00,2))) AS HORES
FROM (SELECT TENPLANING_PER.COEMPRESA,
TENPLANING_PER.COIDENNUMERO,
TENPLANING_PER.FECHAJORNADA,
TENPLANING_PER.COPUESTOTRABAJO,
TENPLANING_PER.COTIPOMOV,
TENPLANITIPOINCIDEN.DCINCIDENCIA,
TENPLANITIPOINCIDEN.COMPERSONAL,
TENPLANING_PER.COCOBERTURA,
DCPUESTOTRABAJO,
DCDIVISIONES,
DCGRUPPROF,
DCUNIPROD,
DCCATEGORIA,
DCCENTROS,
Sum(TENPLANING_PER.HORAS) AS SumaDeHORAS
FROM TENPLANITIPOINCIDEN
INNER JOIN TENPLANING_PER ON (TENPLANITIPOINCIDEN.COINCIDENCIA = TENPLANING_PER.COTIPOMOV)
AND (TENPLANITIPOINCIDEN.COEMPRESA = TENPLANING_PER.COEMPRESA)
JOIN TPUESTOTRABAJO ON TPUESTOTRABAJO.COEMPRESA=TENPLANING_PER.COEMPRESA
AND TENPLANING_PER.COPUESTOTRABAJO=TPUESTOTRABAJO.COPUESTOTRABAJO
JOIN TUNIPROD ON TENPLANING_PER.COEMPRESA=TUNIPROD.COEMPRESA
AND TUNIPROD.COUNIPROD=TPUESTOTRABAJO.COPTUNIDPRO
JOIN TDIVISIONES ON TDIVISIONES.COEMPRESA=TUNIPROD.COEMPRESA
AND TDIVISIONES.CODIVISIONES=TUNIPROD.CODIVISION
JOIN TCATEGORIAS ON TCATEGORIAS.COEMPRESA=TPUESTOTRABAJO.COEMPRESA
AND TCATEGORIAS.COCATEGORIA=TPUESTOTRABAJO.COPTCATEGORIA
JOIN TGRUPPROF ON TENPLANING_PER.COEMPRESA=TGRUPPROF.COEMPRESA
AND TGRUPPROF.COGRUPPROF=TCATEGORIAS.COGRUPPROF
JOIN TCENTROS ON TUNIPROD.COEMPRESA=TCENTROS.COEMPRESA
AND TUNIPROD.COCENTRO=TCENTROS.COCENTROS
GROUP BY TENPLANING_PER.COEMPRESA,
TENPLANING_PER.COIDENNUMERO,
TENPLANING_PER.FECHAJORNADA,
TENPLANING_PER.COPUESTOTRABAJO,
TENPLANING_PER.COTIPOMOV,
TENPLANITIPOINCIDEN.DCINCIDENCIA,
TENPLANITIPOINCIDEN.COMPERSONAL,
TENPLANING_PER.COCOBERTURA,
DCPUESTOTRABAJO,
DCDIVISIONES,
DCGRUPPROF,
DCUNIPROD,
DCCATEGORIA,
DCCENTROS) AS per_agrup
LEFT JOIN (SELECT TENPLANING_PER_COBER.COEMPRESA,
TENPLANING_PER_COBER.COIDENNUMERO,
TENPLANING_PER_COBER.COCOBERTURA,
TENPLANING_PER_COBER.FECHAJORNADA,
TENPLANING_PER_COBER.COTIPOMOV,
TENPLANITIPOINCIDEN.DCINCIDENCIA,
TENPLANITIPOINCIDEN.COMPERSONAL,
TENPLANING_PER_COBER.COPUESTOTRABAJO,
Sum(TENPLANING_PER_COBER.HORAS) AS SumaDeHORAS
FROM TENPLANITIPOINCIDEN
INNER JOIN TENPLANING_PER_COBER ON (TENPLANITIPOINCIDEN.COINCIDENCIA = TENPLANING_PER_COBER.COTIPOMOV) AND (TENPLANITIPOINCIDEN.COEMPRESA = TENPLANING_PER_COBER.COEMPRESA)
GROUP BY TENPLANING_PER_COBER.COEMPRESA,
TENPLANING_PER_COBER.COIDENNUMERO,
TENPLANING_PER_COBER.COCOBERTURA,
TENPLANING_PER_COBER.FECHAJORNADA,
TENPLANING_PER_COBER.COTIPOMOV,
TENPLANITIPOINCIDEN.DCINCIDENCIA,
TENPLANITIPOINCIDEN.COMPERSONAL,
TENPLANING_PER_COBER.COPUESTOTRABAJO) AS per_cober_agrup ON per_agrup.COEMPRESA = per_cober_agrup.COEMPRESA
AND per_agrup.COIDENNUMERO = per_cober_agrup.COIDENNUMERO
AND per_agrup.FECHAJORNADA = per_cober_agrup.FECHAJORNADA
AND per_agrup.COCOBERTURA = per_cober_agrup.COCOBERTURA
GROUP BY per_agrup.COEMPRESA,
per_agrup.DCCENTROS,
per_agrup.DCDIVISIONES,
per_agrup.DCGRUPPROF,
per_agrup.DCUNIPROD,
per_agrup.COTIPOMOV,
per_agrup.DCINCIDENCIA,
per_agrup.DCPUESTOTRABAJO,
per_agrup.DCCATEGORIA,
per_agrup.COMPERSONAL,
Year(per_agrup.FECHAJORNADA),
Month(per_agrup.FECHAJORNADA)
HAVING ((per_agrup.COEMPRESA='1')
AND ((per_agrup.COTIPOMOV)=6
OR (per_agrup.COTIPOMOV)=48
OR (per_agrup.COTIPOMOV)=85
OR (per_agrup.COTIPOMOV)=71
OR (per_agrup.COTIPOMOV)=61
OR (per_agrup.COTIPOMOV)=5
OR (per_agrup.COTIPOMOV)=9
OR (per_agrup.COTIPOMOV)=94
OR (per_agrup.COTIPOMOV)=11
OR (per_agrup.COTIPOMOV)=111
OR (per_agrup.COTIPOMOV)=22
OR (per_agrup.COTIPOMOV)=7)
AND ((Year(per_agrup.FECHAJORNADA))=2015)
AND ((Month(per_agrup.FECHAJORNADA))=1))
ORDER BY per_agrup.COEMPRESA,
per_agrup.DCCENTROS,
per_agrup.DCDIVISIONES,
per_agrup.DCGRUPPROF,
per_agrup.DCUNIPROD,
per_agrup.DCPUESTOTRABAJO,
per_agrup.DCCATEGORIA,
per_agrup.DCINCIDENCIA
我注意到,刪除此最後一欄查詢工作正常
Sum(IIf(per_agrup.COMPERSONAL=1 And per_agrup.COCOBERTURA Is Not Null,IIf(per_cober_agrup.COCOBERTURA Is Not Null And per_cober_agrup.COMPERSONAL=1,Round(per_cober_agrup.SumaDeHORAS/60.00,2),IIf(per_cober_agrup.COCOBERTURA Is Null,Round(per_agrup.SumaDeHORAS/60.00,2),0)),Round(per_agrup.SumaDeHORAS/60.00,2))) AS HORES
什麼是wron g與SQL Server 2008中的最後一列?
謝謝你,請原諒我的英文不好。
'IIF'從SQL Server的作品2012+ – Lamak
'IIF'是一個新的SQL Server 2012的建議使用'CASE'代替。 –
您不應該使用年/月功能作爲搜索條件。它防止索引使用,並會導致性能不佳。使用per_agrup.FECHAJORNADA> ='20150101'和per_agrup.FECHAJORNADA <'20150201' - 樣式 –