Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как написать запрос?  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
здравствуйте!
вопрос вот в чем. есть таблица с продажами, в ней данные по продажам за период 2007-2009 гг.
в таблице есть продажи оптовикам, оптовики имееются в отдельной таблицы(фио, адрес и тд.), связанны по id.
как можно вывести данные, исключив оптовиков?
все усложняется тем, что оптовик может чередоваться в годах, т.е. 2007 оптовик есть, 2008 - нет, 2009 - отять есть? жестко указать невозможно типа
select * from sales
where optovik !=111
используется mssql2000
надеюсь на вашу помощь!
10 ноя 09, 06:00    [7905465]     Ответить | Цитировать Сообщить модератору
 Re: как написать запрос?  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
может циклом проверять является ли оптовик оптовиком в каждом году?
10 ноя 09, 06:01    [7905466]     Ответить | Цитировать Сообщить модератору
 Re: как написать запрос?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А где критерий оптовика?
10 ноя 09, 06:21    [7905469]     Ответить | Цитировать Сообщить модератору
 Re: как написать запрос?  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
yaros-hoi, Если вы выполните пункт 6 будет гораздо легче вам помочь…

Рекомендации по оформлению сообщений в форуме

PS Отвыкайте мыслить категориями цикл, поэлементная обработка…

---------------------------------------------------------
- Ну вы тут и нафлудили! - сказал Геракл, зайдя на Авгиев форум..
10 ноя 09, 07:04    [7905483]     Ответить | Цитировать Сообщить модератору
 Re: как написать запрос?  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
таблица оптовики (wholesale) поле код(code)
таблица продаж (sales) поле agentcode

exec('
		insert
		into	#Sales(q, y, Sales, agentcode)
		select	s.id, s.dt, s.sales, s.agentcode, w.wholesale 
                from baltika..sales s, wholesale w
                where	s.dt between '01.01.2007'  and  '31.12.2007'
	                     and s.agentcode like w.code
	                     and s.agentcode in (select code from wholesale where [year]=2007)
')

оптовик может быть в 2007, а в 2008 уже не являться оптовиком, как их разделять, является ли оптовиком или нет?
10 ноя 09, 08:35    [7905567]     Ответить | Цитировать Сообщить модератору
 Re: как написать запрос?  [new]
Mix
Member

Откуда:
Сообщений: 160
Может так?

		select	
			s.id, 
			s.dt, 
			s.sales, 
			s.agentcode, 
			w.wholesale 
        from 
			baltika..sales s
			inner join wholesale w
				on s.agentcode = w.code
				and [year]=year(s.dt)
		where
			s.dt between '01.01.2007'  and  '31.12.2007'

-------------------------------------------------
Не корысти ради, а токмо во имя поиска благодати.
10 ноя 09, 09:36    [7905715]     Ответить | Цитировать Сообщить модератору
 Re: как написать запрос?  [new]
Glory
Member

Откуда:
Сообщений: 104760
yaros-hoi

оптовик может быть в 2007, а в 2008 уже не являться оптовиком, как их разделять, является ли оптовиком или нет?

Так это вы должны сказать, по каким условиям определяется статус оптовик/не оптовик в каждом году
10 ноя 09, 10:38    [7906055]     Ответить | Цитировать Сообщить модератору
 Re: как написать запрос?  [new]
yaros-hoi
Member

Откуда: Rudnyy
Сообщений: 198
в таблицу оптовиков вносится:
год, код оптовика и фио
10 ноя 09, 11:18    [7906365]     Ответить | Цитировать Сообщить модератору
 Re: как написать запрос?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
yaros-hoi,

Вам трудно здесь написать
CREATE TABLE sales(id ..., dt ..., sales ..., agentcode ..., ....);
CREATE TABLE wholesale(coe ..., wholesale ..., ....);
?
Потому что как у Вас там таблицы связаны, какие типы у полей - непонятно.
Например, сбивает с толку
s.agentcode like w.code
Что это означает? w.code - это шаблон для LIKE что ли?
Получается, для одной записи baltika..sales могут найтись несколько подходящих записей wholesale?
10 ноя 09, 11:34    [7906496]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить