Почему мой итог не подходит правильно, и как я могу это исправить? - PullRequest
1 голос
/ 26 июня 2019

Я работаю над переделкой отчета Access в SSRS с данными из SQL Server. В отчете у меня есть матрица, и одним из значений является SumOfPieces. SumOfPieces находится в моем запросе как sum(t1.pieces) as SumOfPieces. Внутри таблицы я получаю правильные значения строк, просто используя [SumOfPieces], но мой итог не складывает ничего вместе. Например, вот что я получаю:

Product | Facility | Shift/Line | Pieces
BFS     | BRWP     | A 1        | 65,000
BFS     | MHWP     | A 2        | 70,000
BFS     | MHWP     | B 2        | 80,000
________________________________________
Total   |          |            | 70,000

Почему-то это дает мне среднее значение Выражение для суммы просто =Sum(fields!SumOfPieces.Value) Я пробовал разные варианты чего-то вроде этого выражения =Sum(avg(fields!SumPieces.Value,"Product1")

В Access это выполняется с помощью вложенных запросов глубиной 4-5. Специально для этого поля это выглядит как

  • Оригинальный запрос t1 с t1.Pieces
  • Следующий запрос в t1 с t1.Pieces, суммированным как t1.SumOfPieces
  • Следующий запрос объединяет t1 с другими

Отчет Access просто использует этот SumOfPieces в качестве значения строки, а затем сумму (SumOfPieces) для итога.

Пример моего запроса к набору данных:

SELECT
   StaveHistorySummary.fk_Inspectors
  ,StaveHistorySummary.fk_InspectionSites
  ,StaveHistorySummary.fk_ProductionLines
  ,StaveHistorySummary.fk_ProductTypes
  ,StaveHistorySummary.DateMade
  ,StaveHistorySummary.[TimeStamp]
  ,StaveHistorySummary.StaveHistoryguid
  ,InspectionSites.SiteAbbr
  ,Inspectors.Name
  ,ProductTypes.Product
  ,ProductionLines.LineName
  ,CAST(sum(Millproduction.Pieces) as int) AS SumPieces
  ,CASE 
     WHEN SapEdgingInches IS NOT NULL THEN SapEdgingInches
     WHEN HeartEdgingInches IS NOT NULL THEN HeartEdgingInches
     WHEN BothEdgingInches IS NOT NULL THEN BothEdgingInches
     WHEN SawnIncorrInches IS NOT NULL THEN SawnIncorrInches
     WHEN EqualizedIncorrInches IS NOT NULL THEN EqualizedIncorrInches
     WHEN SawnOKInches IS NOT NULL THEN SawnOKInches
     END AS WIDTH
FROM
  StaveHistorySummary
  INNER JOIN ProductionLines
    ON StaveHistorySummary.fk_ProductionLines = ProductionLines.ProductionLines_NDX
  INNER JOIN InspectionSites
    ON StaveHistorySummary.fk_InspectionSites = InspectionSites.InspectionSites_NDX
  INNER JOIN ProductTypes
    ON StaveHistorySummary.fk_ProductTypes = ProductTypes.ProductTypes_NDX
  INNER JOIN Inspectors
    ON StaveHistorySummary.fk_Inspectors = Inspectors.Inspectors_NDX
  INNER JOIN MillProduction
    ON inspectionsites.inspectionsites_ndx = MillProduction.fk_inspectionsites
      AND productionlines.productionlines_ndx = MillProduction.fk_productionlines
      AND producttypes.producttypes_ndx = millproduction.fk_producttypes
WHERE (CAST(CAST(stavehistorysummary.DateMade as date) as datetime) BETWEEN '6/16/2019' AND '6/22/2019')
AND (CAST(CAST(MillProduction.DateMade as date) as datetime) BETWEEN '6/16/2019' AND '6/22/2019')
GROUP BY 
StaveHistorySummary.fk_Inspectors
  ,StaveHistorySummary.fk_InspectionSites
  ,StaveHistorySummary.fk_ProductionLines
  ,StaveHistorySummary.fk_ProductTypes
  ,StaveHistorySummary.DateMade
  ,StaveHistorySummary.[TimeStamp]
  ,StaveHistorySummary.StaveHistoryguid
  ,InspectionSites.SiteAbbr
  ,Inspectors.Name
  ,ProductTypes.Product
  ,ProductionLines.LineName
  ,CAST(sum(Millproduction.Pieces) as int) AS SumPieces
  ,CASE 
     WHEN SapEdgingInches IS NOT NULL THEN SapEdgingInches
     WHEN HeartEdgingInches IS NOT NULL THEN HeartEdgingInches
     WHEN BothEdgingInches IS NOT NULL THEN BothEdgingInches
     WHEN SawnIncorrInches IS NOT NULL THEN SawnIncorrInches
     WHEN EqualizedIncorrInches IS NOT NULL THEN EqualizedIncorrInches
     WHEN SawnOKInches IS NOT NULL THEN SawnOKInches
     END AS WIDTH

Image of Matrix

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...