常见 table 表达式语法错误
Common table expression incorrect syntax
我正在尝试执行此 CTE,但它说存在我无法找到的语法错误。
Msg 102, Level 15, State 1, Line 21 Incorrect syntax near ')'.
任何人都可以发现我无法发现的东西吗?
;with sqltmp (
eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
eoae_ac_reg_no, eoae_applicability_grp, eopse_part_no,
eopse_serial_no, eopse_component_id, maint_obj,
maint_obj_type, trans_status, pre_comp_date,
jobtype, exec_doc_no)
AS (
SELECT eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
eoae_ac_reg_no, eoae_applicability_grp, NULL,
NULL, NULL, eoae_ac_reg_no,
'A', eoae_applicable, eoae_precompdate,
'AC', eoae_precompdoc
FROM eo_eohdr_eo_header WITHa (NOLOCK)
JOIN eo_eoae_eo_ac_effect WITH (NOLOCK)
ON eohdr_ouinstance = eoae_ouinstance
AND eohdr_eo_no = eoae_eo_no
AND eohdr_rev_no = eoae_rev_no
AND eoae_applicable IN ('N', 'PCW')
AND ISNULL(eohdr_cr_no, '##') = '##'
UNION
SELECT eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
NULL, eopse_applicability_grp, eopse_part_no,
eopse_serial_no, eopse_component_id, eopse_component_id,
'C', eopse_applicable, eopse_precompdate,
CASE WHEN eohdr_instiu_flag = 'Y' THEN 'ON' ELSE 'OFWG' END,
eopse_precompdoc
FROM eo_eohdr_eo_header WITH (NOLOCK)
JOIN eo_eopse_eo_part_serial_effect WITH (NOLOCK)
ON eohdr_ouinstance = eopse_ouinstance
AND eohdr_eo_no = eopse_eo_no
AND eohdr_rev_no = eopse_rev_no
AND eopse_applicable IN ('N', 'PCW')
AND ISNULL(eohdr_cr_no,'##') = '##')
语法似乎没问题。当您在 cte 定义后添加 SELECT 时,它解析得很好:
;with sqltmp (
eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
eoae_ac_reg_no, eoae_applicability_grp, eopse_part_no,
eopse_serial_no, eopse_component_id, maint_obj,
maint_obj_type, trans_status, pre_comp_date,
jobtype, exec_doc_no)
AS (
SELECT eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
eoae_ac_reg_no, eoae_applicability_grp, NULL,
NULL, NULL, eoae_ac_reg_no,
'A', eoae_applicable, eoae_precompdate,
'AC', eoae_precompdoc
FROM eo_eohdr_eo_header WITHa (NOLOCK)
JOIN eo_eoae_eo_ac_effect WITH (NOLOCK)
ON eohdr_ouinstance = eoae_ouinstance
AND eohdr_eo_no = eoae_eo_no
AND eohdr_rev_no = eoae_rev_no
AND eoae_applicable IN ('N', 'PCW')
AND ISNULL(eohdr_cr_no, '##') = '##'
UNION
SELECT eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
NULL, eopse_applicability_grp, eopse_part_no,
eopse_serial_no, eopse_component_id, eopse_component_id,
'C', eopse_applicable, eopse_precompdate,
CASE WHEN eohdr_instiu_flag = 'Y' THEN 'ON' ELSE 'OFWG' END,
eopse_precompdoc
FROM eo_eohdr_eo_header WITH (NOLOCK)
JOIN eo_eopse_eo_part_serial_effect WITH (NOLOCK)
ON eohdr_ouinstance = eopse_ouinstance
AND eohdr_eo_no = eopse_eo_no
AND eohdr_rev_no = eopse_rev_no
AND eopse_applicable IN ('N', 'PCW')
AND ISNULL(eohdr_cr_no,'##') = '##'
)
SELECT 1
from sqltmp
我正在尝试执行此 CTE,但它说存在我无法找到的语法错误。
Msg 102, Level 15, State 1, Line 21 Incorrect syntax near ')'.
任何人都可以发现我无法发现的东西吗?
;with sqltmp (
eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
eoae_ac_reg_no, eoae_applicability_grp, eopse_part_no,
eopse_serial_no, eopse_component_id, maint_obj,
maint_obj_type, trans_status, pre_comp_date,
jobtype, exec_doc_no)
AS (
SELECT eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
eoae_ac_reg_no, eoae_applicability_grp, NULL,
NULL, NULL, eoae_ac_reg_no,
'A', eoae_applicable, eoae_precompdate,
'AC', eoae_precompdoc
FROM eo_eohdr_eo_header WITHa (NOLOCK)
JOIN eo_eoae_eo_ac_effect WITH (NOLOCK)
ON eohdr_ouinstance = eoae_ouinstance
AND eohdr_eo_no = eoae_eo_no
AND eohdr_rev_no = eoae_rev_no
AND eoae_applicable IN ('N', 'PCW')
AND ISNULL(eohdr_cr_no, '##') = '##'
UNION
SELECT eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
NULL, eopse_applicability_grp, eopse_part_no,
eopse_serial_no, eopse_component_id, eopse_component_id,
'C', eopse_applicable, eopse_precompdate,
CASE WHEN eohdr_instiu_flag = 'Y' THEN 'ON' ELSE 'OFWG' END,
eopse_precompdoc
FROM eo_eohdr_eo_header WITH (NOLOCK)
JOIN eo_eopse_eo_part_serial_effect WITH (NOLOCK)
ON eohdr_ouinstance = eopse_ouinstance
AND eohdr_eo_no = eopse_eo_no
AND eohdr_rev_no = eopse_rev_no
AND eopse_applicable IN ('N', 'PCW')
AND ISNULL(eohdr_cr_no,'##') = '##')
语法似乎没问题。当您在 cte 定义后添加 SELECT 时,它解析得很好:
;with sqltmp (
eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
eoae_ac_reg_no, eoae_applicability_grp, eopse_part_no,
eopse_serial_no, eopse_component_id, maint_obj,
maint_obj_type, trans_status, pre_comp_date,
jobtype, exec_doc_no)
AS (
SELECT eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
eoae_ac_reg_no, eoae_applicability_grp, NULL,
NULL, NULL, eoae_ac_reg_no,
'A', eoae_applicable, eoae_precompdate,
'AC', eoae_precompdoc
FROM eo_eohdr_eo_header WITHa (NOLOCK)
JOIN eo_eoae_eo_ac_effect WITH (NOLOCK)
ON eohdr_ouinstance = eoae_ouinstance
AND eohdr_eo_no = eoae_eo_no
AND eohdr_rev_no = eoae_rev_no
AND eoae_applicable IN ('N', 'PCW')
AND ISNULL(eohdr_cr_no, '##') = '##'
UNION
SELECT eohdr_ouinstance, eohdr_eo_no, eohdr_rev_no,
eohdr_engdoctype, eohdr_src_doc_type, eohdr_mcm_no,
NULL, eopse_applicability_grp, eopse_part_no,
eopse_serial_no, eopse_component_id, eopse_component_id,
'C', eopse_applicable, eopse_precompdate,
CASE WHEN eohdr_instiu_flag = 'Y' THEN 'ON' ELSE 'OFWG' END,
eopse_precompdoc
FROM eo_eohdr_eo_header WITH (NOLOCK)
JOIN eo_eopse_eo_part_serial_effect WITH (NOLOCK)
ON eohdr_ouinstance = eopse_ouinstance
AND eohdr_eo_no = eopse_eo_no
AND eohdr_rev_no = eopse_rev_no
AND eopse_applicable IN ('N', 'PCW')
AND ISNULL(eohdr_cr_no,'##') = '##'
)
SELECT 1
from sqltmp