Вниз
Скачать: CL | DM;

Проблема с запросом   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
15-1168429117
Post_
2007-01-10 14:38
2007.01.28
Шфрование...


2-1168125535
Тема
2007-01-07 02:18
2007.01.28
Создание клиент-серверного сетевого чата


15-1167826006
melkyi
2007-01-03 15:06
2007.01.28
Интересная задача по ДМ


3-1163062331
novill
2006-11-09 11:52
2007.01.28
IB 7.5 Как в триггере изнать сколько записей вернул подзапрос?


1-1165330455
GrayFace
2006-12-05 17:54
2007.01.28
Наткнулся в реестре на параметр "Add interface methods"




   Наверх