2016-10-28 2 views
0

У меня есть эта хранимая процедура:Update хранимая процедура не деться колонки

SELECT  
    s.Id AS IdCategory, 
    s.Description AS Category, 
    COUNT(s.Description) AS TotalYEAR 
INTO 
    #AuditYear 
FROM  
    [dbo].[Audit] aa (NOLOCK) 
INNER JOIN 
    [dbo].[AuditActOrCondition] a (NOLOCK) ON aa.Id = a.IdAudit 
INNER JOIN 
    [dbo].[ActOrCondition] ac (NOLOCK) ON a.IdActCondition = ac.Id 
INNER JOIN 
    [dbo].[ACType] t (NOLOCK) ON ac.Type = t.Id 
INNER JOIN 
    [dbo].[ACSubType] s (NOLOCK) ON ac.Subtype = s.Id 
WHERE 
    YEAR(aa.CreateDate) = (SELECT YEAR 
          FROM [dbo].[KPIS] k1 (NOLOCK) 
          WHERE k1.Id = @Id) 
GROUP BY 
    s.Id, s.Description 


SELECT  
    s.Id AS IdCategory, 
    s.Description AS Category, 
    COUNT(s.Description) AS TotalMonth 
INTO 
    #AuditMonth 
FROM 
    [dbo].[Audit] aa (NOLOCK) 
INNER JOIN 
    [dbo].[AuditActOrCondition] a (NOLOCK) ON aa.Id = a.IdAudit 
INNER JOIN 
    [dbo].[ActOrCondition] ac (NOLOCK) ON a.IdActCondition = ac.Id 
INNER JOIN 
    [dbo].[ACType] t (NOLOCK) ON ac.Type = t.Id 
INNER JOIN 
    [dbo].[ACSubType] s (NOLOCK) ON ac.Subtype = s.Id 
WHERE 
    MONTH(aa.CreateDate) = (SELECT MONTH 
          FROM [dbo].[KPIS] k1 (NOLOCK) 
          WHERE k1.Id = @Id) 
GROUP BY 
    s.Id, s.Description 

SELECT 
    y.IdCategory, y.Category, 
    ISNULL(m.TotalMonth,0) AS TotalMonth, 
    y.TotalYEAR 
FROM 
    #AuditYear y 
LEFT JOIN 
    #AuditMonth m ON y.IdCategory = m.IdCategory 

И я хочу, чтобы добавить столбец с именем BranchOfficeId поэтому я делаю INNER JOIN как:

SELECT  
    s.Id AS IdCategory, 
    s.Description AS Category, 
    COUNT(s.Description) AS TotalYEAR, 
    b.BranchOfficeId 
INTO 
    #AuditYear 
FROM  
    [dbo].[Audit] aa (NOLOCK) 
INNER JOIN 
    [dbo].[Department] AS d (NOLOCK) ON aa.IdDepartment = d.Id 
INNER JOIN 
    [dbo].[BranchOffice] AS b (NOLOCK) ON b.BranchOfficeId = d.BranchOfficeId 
INNER JOIN 
    [dbo].[AuditActOrCondition] a (NOLOCK) ON aa.Id = a.IdAudit 
INNER JOIN 
    [dbo].[ActOrCondition] ac (NOLOCK) ON a.IdActCondition = ac.Id 
INNER JOIN 
    [dbo].[ACType] t (NOLOCK) ON ac.Type = t.Id 
INNER JOIN 
    [dbo].[ACSubType] s (NOLOCK) ON ac.Subtype = s.Id 
WHERE 
    YEAR(aa.CreateDate) = (SELECT YEAR 
          FROM [dbo].[KPIS] k1 (NOLOCK) 
          WHERE k1.Id = @Id) 
GROUP BY 
    s.Id, s.Description, b.BranchOfficeId 


SELECT  
    s.Id AS IdCategory, 
    s.Description AS Category, 
    COUNT(s.Description) AS TotalMonth 
INTO 
    #AuditMonth 
FROM 
    [dbo].[Audit] aa (NOLOCK) 
INNER JOIN 
    [dbo].[AuditActOrCondition] a (NOLOCK) ON aa.Id = a.IdAudit 
INNER JOIN 
    [dbo].[ActOrCondition] ac (NOLOCK) ON a.IdActCondition = ac.Id 
INNER JOIN 
    [dbo].[ACType] t (NOLOCK) ON ac.Type = t.Id 
INNER JOIN 
    [dbo].[ACSubType] s (NOLOCK) ON ac.Subtype = s.Id 
WHERE 
    MONTH(aa.CreateDate) = (SELECT MONTH 
          FROM [dbo].[KPIS] k1 (NOLOCK) 
          WHERE k1.Id = @Id) 
GROUP BY 
    s.Id, s.Description 

SELECT 
    y.IdCategory, y.Category, 
    ISNULL(m.TotalMonth,0) AS TotalMonth, 
    y.TotalYEAR 
FROM 
    #AuditYear y 
LEFT JOIN 
    #AuditMonth m ON y.IdCategory = m.IdCategory 

Но когда я обновляю свой комплекс введите только столбцы:

public int IdCategory { get; set; } 
public string Category { get; set; } 
public int TotalMonth { get; set; } 
public Nullable<int> TotalYEAR { get; set; } 

Может кто-нибудь объяснить мне, почему я не могу получить BranchOfficeId значение? С уважением

+0

Set [Вредные Привычки пнуть - положить NOLOCK везде] (http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) - это не рекомендуется * использовать это везде - совсем наоборот! –

ответ

0
SELECT y.IdCategory 
     ,y.Category 
     ,ISNULL(m.TotalMonth,0) AS TotalMonth 
     ,y.TotalYEAR 
     FROM #AuditYear y 
      LEFT JOIN #AuditMonth m 
      ON y.IdCategory = m.IdCategory 

#AuditYear является результатом вашего первого выбора, то вам нужно только BranchOfficeId столбца в последней выберите:

SELECT y.IdCategory 
     ,y.Category 
     ,ISNULL(m.TotalMonth,0) AS TotalMonth 
     ,y.TotalYEAR, y.BranchOfficeId 
     FROM #AuditYear y 
      LEFT JOIN #AuditMonth m 
      ON y.IdCategory = m.IdCategory 
Смежные вопросы