powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с решением запроса в MS SQL 2000...
4 сообщений из 4, страница 1 из 1
Помогите с решением запроса в MS SQL 2000...
    #32016934
X-Defender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код:

set dateformat dmy


select FirmName=(select top 1 Name from Firms where FirmID=Destinator),


Suma1=(select sum(boxs*units_in_box*cost_unit)
from SalesProduction
where Factura_ID in (select FacturaID from Factures
where Destinator=F.Destinator
and Registred=1
and Supplier in (1,2)
and Data between '10.10.2001' and '10.11.2001'

)
and Production_ID=60000001 )



from Factures F
where Registred=1
and Supplier in (1,2)
and Data between '10.10.2001' and '10.11.2001'

group by Destinator




Вот этот запрос выдает таблицу состоящию из названия фирмы и суммы ее оборота по определенной продукции.
Трабл в том, что выводятся и фирмы, где этого оборота нет.

т.е. мне было-бы удобно, если в Where я мог вставить

AND Suma1 is not null

но этого я не могу, т.к. поле в этом случае вычисляемое. Полностью запрос на условие в Where -мне ставить не хочется... поэтому прошу вашей помощи.
...
Рейтинг: 0 / 0
Помогите с решением запроса в MS SQL 2000...
    #32016977
Максим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том что ты сначала находиш фирму а потом смотришь обороты по ней.
Дабы сильно ничего не переписывать
Вариант1
Залей всю выборку во временную табл. а потом делай select с условием из нее.
Select select FirmName=(select top 1 Name from Firms where FirmID=Destinator),
***
into #TMP
Select *
from #TMP
where Summa1 Not Null
или
Вариант2
Аналогичен первуму варианту, реализовав его не через временну табл. а добавив лишний уровень вложенности.
...
Рейтинг: 0 / 0
Помогите с решением запроса в MS SQL 2000...
    #32017001
Владимир Смирнов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте так:
select FirmName = Firms.Name,
Suma1= sum(boxs*units_in_box*cost_unit)
from SalesProduction s
INNER JOIN Factures f ON f.FacturaID = s.Factura_ID
INNER JOIN Firms ON Firms.FirmID = f.Destinator
where s.Production_ID=60000001
and f.Registred=1
and f.Supplier in (1,2)
and f.Data between '10.10.2001' and '10.11.2001'
group by f.Destinator, Firms.Name
...
Рейтинг: 0 / 0
Помогите с решением запроса в MS SQL 2000...
    #32017005
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если обойтись минимальными изменениями в коде скрипта, то следует после Group By Destinator вставить

HAVING
(select sum(boxs*units_in_box*cost_unit)
from #SalesProduction
where Factura_ID in (select FacturaID from #Factures
where Destinator=F.Destinator
and Registred=1
and Supplier in (1,2)
and Data between '10.10.2001' and '10.11.2001'

)
and Production_ID=60000001 ) Is Not NULL


Но я бы предложил другой вариант, SubTree Cost которого в два раза ниже:
Select
ff.Name,
SUM(s.boxs*s.units_in_box*s.cost_unit)
From
#Factures f
inner join #SalesProduction s
on s.Factura_ID=f.FacturaID and s.Production_ID=60000001
inner join #Firms ff
on ff.Firmid=f.Destinator
Where
f.registred=1 AND
Supplier in (1,2) AND
f.Data between '10.10.2001' and '10.11.2001'
Group By
ff.Name
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с решением запроса в MS SQL 2000...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]