我将具体。我试图用select进行更新,但是sql开发会抛出一个错误。查询是这样的:
UPDATE(SELECT I.FECHA_EFECTIVA, I.FECHA_FIN, T.FECHA_EFECTIVA FECHA_EFEC_TEMA, T.FECHA_FIN FECHA_FIN_TEMA
FROM TA_SEFE_POND_INDCS_FINANS I
LEFT JOIN TA_SEFE_MATR_TEMAS_FINANS T
ON I.TEMA_ID = T.TEMA_ID
LEFT JOIN TA_SEFE_MATR_FINAN M
ON M.MATR_FINAN_ID = T.MATR_FINAN_ID)
set FECHA_EFECTIVA = FECHA_EFEC_TEMA,
FECHA_FIN = FECHA_FIN_TEMA;
错误是“未知命令”。
奇怪的是,select语句工作正常,问题可能是最后的更新:S
抱歉我的英文不好.__。
答案 0 :(得分:1)
使用此:
MERGE INTO TA_SEFE_POND_INDCS_FINANS T1
USING
(
SELECT
T.TEMA_ID TEMA
,T.FECHA_EFECTIVA FECHA_EFEC_TEMA
,T.FECHA_FIN FECHA_FIN_TEMA
FROM
TA_SEFE_MATR_TEMAS_FINANS T
LEFT JOIN
TA_SEFE_MATR_FINAN M
ON
M.MATR_FINAN_ID = T.MATR_FINAN_ID
) T2
ON
(
T1.TEMA_ID = T2.TEMA
)
WHEN MATCHED THEN
UPDATE SET
T1.FECHA_EFECTIVA = T2.FECHA_EFEC_TEMA
,T1.FECHA_FIN = T2.FECHA_FIN_TEMA;
答案 1 :(得分:0)
您无法更新SELECT
的结果。我认为这就是你所追求的:
WITH (SELECT i.fecha_efectiva, i.fecha_fin,
t.fecha_efectiva fecha_efec_tema, t.fecha_fin fecha_fin_tema
FROM ta_sefe_pond_indcs_finans i
LEFT JOIN ta_sefe_matr_temas_finans t
ON i.tema_id = t.tema_id
LEFT join ta_sefe_matr_finan m
ON m.matr_finan_id = t.matr_finan_id) a
UPDATE ta_sefe_pond_indcs_finans i
SET i.fecha_efectiva = a.fecha_efec_tema,
i.fecha_fin = a.fecha_fin_tema
WHERE i.fecha_efectiva = a.fecha_efectiva AND i.fecha_fin = a.fecha_fin;
这会使用您的查询进行更新,但会将更新定位到您的表而不是查询。