Когда я пытаюсь этот запросрезультат Сумма в SQL запросе
Select S.Name,S.No,
SUM(Case when s.Furit =’Mango’ then total else 0 end) as Mango,
SUM(Case when s.Furit =’Apple’ then total else 0 end) as Apple,
SUM(total) total,
Sum(convert(int,Am)) Amount, MAX(S.Value) Value
from (
Select
Veh_table.Name, Veh_table.No, VV_table.Furit, count(VV_table.Furit) as total, Veh_table. Amount as Am, Veh_table. Value
from VV_table
inner join Veh_table on VV_table.MID=Veh_table.ID
inner join Re_table on Veh_table.RID=Re_table.RID
WHERE
Re_table.StartDate>= '2016-08-01 00:00:00' and
Re_table.EndDate<='2016-08-31 23:59:59' and
Re_table.Region= 'UK'
and Veh_table.No= '431'
AND Furit <> ''
Group By Veh_table.Name, Veh_table.RegNo, VV_table.Furit,Veh_table.Amount,Veh_table.Value) S
GROUP BY
s.No,s.Name
это шоу результат, как этот
Name No Mango Apple total Amount Value
John 431 9 2 11 964 98
Когда я удалить фрукты сверху и попробовать этот
Select S.Name,S.No
SUM(total) total,
Sum(convert(int,Am)) Amount, MAX(S.Value) Value
from (
Select
Veh_table.Name, Veh_table.No,count(VV_table.Furit) as total, Veh_table.Amount as Am, Veh_table.Value
from VV_table
inner join Veh_table on VV_table.MID=Veh_table.ID
inner join Re_table on Veh_table.RID=Re_table.RID
WHERE
Re_table.StartDate>= '2016-08-01 00:00:00' and
Re_table.EndDate<='2016-08-31 23:59:59' and
Re_table.Region= 'UK'
and Veh_table.No= '431'
AND Furit <> ''
Group By Veh_table.Name, Veh_table.RegNo, Veh_table.Amount,Veh_table.Value) S
GROUP BY
s.No,s.Name
Name RegNo total Amount Value
John 431 11 243 98
Теперь я хотите также Манго и Apple в данных также правильная сумма составляет 243. когда я удалить VV_table.Furit из отборных затем составит 243 дисплей, который является правильным тогда, когда я добавляю VV_table.Furit тогда составит 964 является дисплей, который неправильно я хочу привести как этот
Name No Mango Apple total Amount Value
John 431 9 2 11 243 98
Вы не должны включать Veh_table.Amount в GROUP BY, а скорее суммируйте его – StanislavL
Ваш первый запрос Group by содержит VV_table.Furit, тогда как второй doen't. Таким образом, вы получаете разные значения сумм. Операция агрегации не является одинаковой. – istovatis
@StanislavL когда я удаляю количество из группы, тогда это показывает несколько результатов и ошибок. Столбец «Veh_table.Amount» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. – user6628729