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

Откуда:
Сообщений: 41
Помогите составить запрос на выборку данных у меня что то не выходит (База данных MS SQL SERVER)

есть таблица с полями (строки я пронумеровал для дальнейшего объяснения)

Town ClassName Programm Mer id_data col
(1) Апатиты 10 класс Профессия Математика 6 2
(2) Апатиты 10 класс Профессия Математика 5 4
(3) Апатиты 10 класс Профессия Математика 4 7
(4) Апатиты 10 класс Профессия Физика 7 5
(5) Апатиты 10 класс Профессия Физика 5 9
(6) Апатиты 10 класс Профессия Физика 3 3
(7) Апатиты 10 класс Профессия История 7 9
(8) Апатиты 10 класс Профессия История 4 10
(9) Апатиты 10 класс Профессия История 1 12

Объяснение таблицы:
Поле Town - Название города
Поле ClassName - Класс в котором учатся школьники
Поле Programm - Выбор программы дополнительного обучения школьниками
Поле Mer - Предмет дополнительного обучения
Поле id_data - указатель на месяц 1-январь 2-февраль 3-март 4-апрель 5-май 6-июнь 7-июль
Поле col - Количество учащихся в группе

Если обратить внимание то в указанной таблице только 3 разные группы в которых численность менялась втечении месяцев.
(Т.е. группу идентифицируют поля: Town, ClassName, Programm, Mer)

Значение месяца необходимо для слежки за текучестью группы, если в каком то месяце изменяется
численность группы то добавляется соответ. запись в эту таблицу


Мне необходимо выбрать все записи за какой то месяц, проблема в том что надо учитывать предыдущие месяцы
Пример 1
Допустим необходимо узнать численноть групп за МАЙ (id_data=5)

В итоге должно получиться
Town ClassName Programm Mer id_data col
(2) Апатиты 10 класс Профессия Математика 5 4
(5) Апатиты 10 класс Профессия Физика 5 9
(8) Апатиты 10 класс Профессия История 4 10

Пример 2
Допустим необходимо узнать численноть групп за ФЕВРАЛЬ (id_data=2)

В итоге должно получиться
Town ClassName Programm Mer id_data col
(9) Апатиты 10 класс Профессия История 1 12

Пример 3
Допустим необходимо узнать численноть групп за ЯНВАРЬ (id_data=1)

В итоге должно получиться
Town ClassName Programm Mer id_data col
(9) Апатиты 10 класс Профессия История 1 12

Пример 4
Допустим необходимо узнать численноть групп за ИЮНЬ (id_data=6)

В итоге должно получиться
Town ClassName Programm Mer id_data col
(1) Апатиты 10 класс Профессия Математика 6 2
(5) Апатиты 10 класс Профессия Физика 5 9
(8) Апатиты 10 класс Профессия История 4 10



Помогите составить запрос, буду признателен, если кто-нибудь поможет
e-mail MaxSuS2@yandex.ru
18 фев 04, 12:31    [540949]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в MS SQL Server  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
???
declare @id_data int

set @id_data = 5
select a.Town,
a.ClassName,
a.Programm,
a.Mer,
a.id_data,
a.col
from [таблица] a join
(select Town,
ClassName,
Programm,
Mer,
max(id_data) as id_data
from [таблица]
where id_data <= @id_data
group by Town, ClassName, Programm, Mer) b on a.Town = b.Town
and a.ClassName = b.ClassName
and a.Programm = b.Programm
and a.Mer = b.Mer
and a.id_data = b.id_data
18 фев 04, 12:49    [541014]     Ответить | Цитировать Сообщить модератору
 Re: Запрос в MS SQL Server  [new]
??????
Member

Откуда:
Сообщений: 41
Спасибо tpg все получилось
18 фев 04, 13:02    [541062]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить