【问题标题】:Remove duplicate rows in t-sql query results删除 t-sql 查询结果中的重复行
【发布时间】:2014-03-27 11:40:54
【问题描述】:

我在下面有一些 T-SQL,我面临一个问题,即每行都以相同的值返回两次。如何确保每个都返回一次或强制选择不同

;WITH CTE_ReportDetails
AS (
    SELECT 
        CASE(GROUPING(M.Acronym))
            WHEN 0 THEN [Acronym]
            WHEN 1 THEN 'GRAND TOTAL'
            END AS [Company],

        CASE(GROUPING(DC.Name))
            WHEN 0 THEN DC.[Name]
            WHEN 1 THEN 'N/A'
            END AS [CatName],

        CASE(GROUPING(D.[Name]))
            WHEN 0 THEN D.[Name]
            WHEN 1 THEN 'Total '+ '('+DC.[Name]+')'
            END AS [Name],

        SUM(ISNULL(B.One, 0)) AS One,
        SUM(ISNULL(B.Two, 0)) AS Two,
        SUM(ISNULL(B.Three, 0)) AS Three,
        ISNULL(B.Description, '') AS Description,
        GROUPING(M.Acronym) AS CompanyGrouping,
        GROUPING(DC.[Name]) AS DCatGroup,
        GROUPING(D.[Name]) AS DGroup
    FROM Dee D 
        INNER JOIN DeeCategory DC ON D.DeeCategoryId = DC.DeeCategoryId
        INNER JOIN BD B ON B.DeeId = D.DeeId
        INNER JOIN Report R ON R.RptId = B.RptId
        INNER JOIN Company M ON R.CompanyId = M.CompanyId                
    WHERE (R.ReportDate >= @StartDate AND R.ReportDate <= @EndDate) AND (R.CompanyId IN (SELECT DATA FROM SPLIT(@CompanyIds,',')))
    GROUP BY M.Acronym, DC.Name, D.Name,B.Description
    WITH ROLLUP
)
SELECT Company, Name As [Dee], 
        One, 
        Three, 
        Two, 
        (One + Three + Two) AS Total,
        Description
FROM CTE_ReportDetails

【问题讨论】:

    标签: sql sql-server tsql sql-server-2005


    【解决方案1】:

    您的报告应该具有来自group by 的唯一值组合。所以,这四列应该是唯一的:

    GROUP BY M.Acronym, DC.Name, D.Name,B.Description
    

    如果我不得不猜测,您会得到重复,因为 B.Description 在 B 表中重复。我建议将其从 GROUP BY 中删除并更改此行:

        ISNULL(B.Description, '') AS Description,
    

    到

        ISNULL(max(B.Description), '') AS Description,
    

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多