Соединение SQL получает неверное значение

#sql-server

#sql-сервер

Вопрос:

У меня есть этот код

 Select  proinfo.ProjectN AS 'BS',
        proinfo.Weight AS 'Poids Dossier Kg',

        Cast((SUM(Case when  DailyFab.FK_idNextProcess=13 
        then ProjShFab.[Weight] * DailyFab.[Quantity] Else 0 End)/proinfo.Weight)*100 as decimal(10,2)) as 'Taux Fab',

        Cast((SUM(Case when  DailyShipp.FK_idNextProcess=14 
        then ProjShFab.[Weight] * DailyShipp.[Quantity] Else 0 End)/proinfo.Weight)*100 as decimal(10,2)) as 'Taux Exp'

FROM 
    [dbo].[ProjectShipping] ProjShFab
    Inner JOIN ProjectInfo proinfo ON proinfo.id = ProjShFab.IdProject 
    Left Join DailyShippingSteelNavision DailyShipp on DailyShipp.FK_idPartShip= ProjShFab.id
    Left Join DailyPaintProduction DailyFab on DailyFab.FK_idPartShip= ProjShFab.id

    Group By proinfo.ProjectN,proinfo.Weight
    Order by proinfo.ProjectN 
  

когда я запускаю его, я получаю неверное значение как в ‘Taux Fab’, так и в ‘Taux Exp’, но, допустим, я комментирую эту строку кода

 --Left Join DailyPaintProduction DailyFab on DailyFab.FK_idPartShip= ProjShFab.id
  

затем я запускаю код, я получаю правильное значение в ‘Taux Exp’ и наоборот
Почему у меня возникла эта проблема и как я могу ее решить, заранее спасибо.

Комментарии:

1. Выполните запрос без фактического агрегированного значения суммы и проверьте, что вы получаете.

2. Похоже, у вас отношение «многие к одному» и, следовательно, объединение дубликатов. Сначала агрегируйте, затем выполните JOIN .

3. @ ZorgoZ Я пытаюсь, но это не работает

4. @Larnu как я могу это сделать, не могли бы вы привести мне пример