#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 как я могу это сделать, не могли бы вы привести мне пример