2017-08-02 56 views
-6

我想这SELECT查询转换为UPDATE查询...转换选择要更新查询

SELECT 
    ID, BL.[Tipo_Actividad], ACC.Tipo_Actividad AS TipoActividad, 
    [Aplicacion], AP.Descripcion AS AplicacionN, 
    [Gestor_APP], TIBM.Contacto AS Nombre, [Gestor_APP_Sust], 
    TIBM1.Contacto AS NombreSAP, [Hostname_APP], [IP_APP], 
    [Gestor_BD], TIBM2.Contacto AS NombreGBD, [Gestor_BD_Sust], 
    TIBM3.Contacto NombreGSBD, [Hostname_BD], [IP_BD], 
    [Sitios_Afectados], [Subsitios], [horarios], [dias], [No_Programar], [F20] 
FROM 
    [ADOGESCAM].[dbo].[Baseline] BL 
INNER JOIN 
    ACTIVIDADES_CAMBIO ACC ON BL.[Tipo_Actividad] = ACC.Id_Actividad 
INNER JOIN 
    APLICACIONESINVO_CAMBIO AP ON BL.[Aplicacion] = AP.id_ApCambio 
INNER JOIN 
    Torres_IBM TIBM ON BL.[Gestor_APP] = TIBM.Cve_TorresIBM 
INNER JOIN 
    Torres_IBM TIBM1 ON BL.[Gestor_APP_Sust] = TIBM1.Cve_TorresIBM 
INNER JOIN 
    Torres_IBM TIBM2 ON BL.[Gestor_BD] = TIBM2.Cve_TorresIBM 
INNER JOIN 
    Torres_IBM TIBM3 ON BL.[Gestor_BD_Sust] = TIBM3.Cve_TorresIBM; 
+3

请花点时间多解释一下你想要的东西。更新哪个表?哪些列?更新哪些值? – Lamak

+0

1)你有什么困难和2)你期望更新哪些*特定表*,因为这个查询加入了很多不同的表? 'UPDATE'接受一个'FROM'子句(你可以用'WITH'来简化),但是它一次只能更新一个表。 –

+0

我想要做的是更新该查询产生的数据 –

回答

1

更新由该查询生成的数据

例如,我们需要更新[ADOGESCAM].[dbo].[Baseline]

UPDATE BL 
SET SomeColumn = AnotherColumn 
    --,here comes another columns from [ADOGESCAM].[dbo].[Baseline] 
FROM [ADOGESCAM].[dbo].[Baseline] BL 
inner join ACTIVIDADES_CAMBIO ACC on BL.[Tipo_Actividad] = ACC.Id_Actividad 
inner join APLICACIONESINVO_CAMBIO AP on BL.[Aplicacion] = AP.id_ApCambio 
inner join Torres_IBM TIBM on BL.[Gestor_APP] = TIBM.Cve_TorresIBM 
inner join Torres_IBM TIBM1 on BL.[Gestor_APP_Sust] = TIBM1.Cve_TorresIBM 
inner join Torres_IBM TIBM2 on BL.[Gestor_BD] = TIBM2.Cve_TorresIBM 
inner join Torres_IBM TIBM3 on BL.[Gestor_BD_Sust] = TIBM3.Cve_TorresIBM; 

UPDATE和SELECT查询的结果表77777的数据

我猜你需要MERGE的SQL Server(从2008):

;WITH cte AS (
--your query here 
) 

MERGE 77777 as t 
USING cte as s 
ON t.UniqueIDcolumn = s.UniqueIDcolumn --maybe more columns here, 
--There must be 1 row in target (t) table that is corresponding to 1 row in source (s) table 
WHEN MATCHED THEN 
    UPDATE SET Column1 = s.Column1 
      --, etc 
WHEN NOT MATCHED THEN INSERT 
    INSERT (Column1, Column2, ...etc) 
    VALUES (s.Column1, s.Column2, ...etc); 

这将更新已经存在的东西和插入新数据。