如何更新存储过程以从数据源中获取更多列,同时保留旧数据

时间:2014-11-20 12:44:59

标签: sql stored-procedures

我有一个遗留数据库。存储过程SC_Total_Alerts_SP每周运行并提取数据。这已经持续多年了。现在要求是我需要获得一些额外的列。这些列不是旧版DB的一部分。我知道我需要对存储过程做的更改,但我的问题是如何确保我不丢失任何遗留数据。

查询:

DECLARE @my_Date DATETIME = GETDATE()

SELECT 
    @my_Date AS Date,
    Title_9691DD10_7211_C835_E3E7_6B38AF8B8104 AS Alert,
    Priority_B930B964_A1C4_0B5A_B2D1_BFBE9ECDC794 AS Priority,
    SDUA.DisplayName AS Name
FROM 
    [ServiceManager].[dbo].[MT_System$WorkItem$Incident] WII
LEFT OUTER JOIN 
    (SELECT * 
     FROM [ServiceManager].[dbo].Relationship
     WHERE RelatiONshipTypeId = '15E577A3-6BF9-6713-4EAC-BA5A5B7C4722') ATU ON ATU.SourceEntityId = WII.BaseManagedEntityId 
LEFT OUTER JOIN 
    [ServiceManager].[dbo].MT_System$Domain$User SDUA ON SDUA.BaseManagedEntityId = ATU.TargetEntityId 
INNER JOIN 
    (SELECT * 
     FROM [ServiceManager].[dbo].LocalizedText
     WHERE ElementName LIKE '%IncidentSTATUSEnum%'
       AND LanguageCode = 'ENU'
       AND DisplayStringId IS NOT NULL) LTS ON LTS.LTStringId = WII.Status_785407A9_729D_3A74_A383_575DB0CD50ED 
WHERE 
    LTS.ElementName LIKE '%Resolved'
    AND SDUA.DisplayName IS NOT NULL
    AND CreatedDate_6258638D_B885_AB3C_E316_D00782B8F688 > DateAdd(dd, -7, @my_Date)

1 个答案:

答案 0 :(得分:0)

简单的方法是将原始查询放在WITH语句中,然后使用该派生表并将新数据左外连接到它以获取新列。