Вниз
Скачать: 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.025 c
6-1156354343
anton773
2006-08-23 21:32
2007.01.28
Перехват закачки файла


15-1166237552
for
2006-12-16 05:52
2007.01.28
Сишные циклы FOR в Паскаль не переводятся?


15-1168264739
brrrr
2007-01-08 16:58
2007.01.28
Нас всех прослушивают! Ужас! Мы беззащитны :(


1-1165427944
du_hast
2006-12-06 20:59
2007.01.28
Принудительный вызов Hint -а


2-1168499525
Roma L
2007-01-11 10:12
2007.01.28
SQL Server




   Наверх