Форум: "Базы";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизПроблема с запросом Найти похожие ветки
← →
petvv © (2006-11-09 07:28) [0]Доброго времени суток мастера !
Подмогните с запросом:
select Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr, Sum(TotOsnov.Cur) Den, iif((Sum(TotOsnov.Cur)<>0),Fuel.Price,0) from TotOsnov, Fuel, Osnovan
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
and
Fuel.Num=TotOsnov.Product
and
Osnovan.Num=TotOsnov.Osnovanye
group by Marka, Name, Price
Пытаюсь сделать, чтобы если сумма <> 0 подставлял цену, а если = 0 тогда ставил цену = 0. В чём грабли?
← →
ЮЮ © (2006-11-09 07:41) [1]грабли в синтаксисе. Нет никаких iif в LocalSQL.
Ну и что 0 вместо Fuel.Price так существенен, если Sum(TotOsnov.Cur) = 0
← →
ЮЮ © (2006-11-09 07:54) [2]Чтбы не показывались нули можно и на клиенте сделать.
Но если хочется всё-таки в запросе, то так:
select
Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr, Sum(TotOsnov.Cur) Den, Fuel.Price
from
TotOsnov
join Fuel on Fuel.Num=TotOsnov.Product
join Osnovan Fuel.Num=TotOsnov.Product
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
group by Marka, Name, Price
having Sum(TotOsnov.Cur) <> 0
union
select
Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr, Sum(TotOsnov.Cur) Den, 0
from
TotOsnov
join Fuel on Fuel.Num=TotOsnov.Product
join Osnovan Fuel.Num=TotOsnov.Product
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
group by Marka, Name, Price
having Sum(TotOsnov.Cur) = 0
← →
petvv © (2006-11-09 08:48) [3]Всем респект, надо было вот так:
select Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr,
Sum(TotOsnov.Cur) Den, Fuel.Price from TotOsnov, Fuel, Osnovan
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
and
Fuel.Num=TotOsnov.Product
and
Osnovan.Num=TotOsnov.Osnovanye
group by Marka, Name, Price
having Sum(TotOsnov.Cur)<>0
union
select Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr,
Sum(TotOsnov.Cur) Den, 0 from TotOsnov, Fuel, Osnovan
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
and
Fuel.Num=TotOsnov.Product
and
Osnovan.Num=TotOsnov.Osnovanye
group by Marka, Name, Price
having Sum(TotOsnov.Cur)=0
Тема закрыта!
← →
ЮЮ © (2006-11-09 09:29) [4]
> Всем респект, надо было вот так:
Нет, надо было как в [2]. ИМХО,
1) не следует, в Where смешивать условия объединения таблиц и условия отбора записей. Тем более, что первое горазжо шире по возможностям.
2) следует при написании sql запроса применять форматирование, как и и при написании кода.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c