Консультация № 70448
11.01.2007, 11:41
0.00 руб.
0 5 5
Здравствуйте, подскажите кто сможет. Есть таблицы Список и Данные. В таблице Данные поля Код, Год, I кв, II кв, III кв, IV кв. Необходимо выбрать данные за кокой-то период (например с IV кв 2000 г по III кв 2002 г). Кто подскажет как это реализовать.
Заранее благодарю.

Обсуждение

Неизвестный
11.01.2007, 11:57
общий
это ответ
Здравствуйте, КЕВ!

Надо преобразовать 4 кв. 2000 г. в формат даты (01.09.2000)
3 кв. 2002 года соответственно (01.06.2002)

по функциям посмотрю и напишу на минифорум
Неизвестный
11.01.2007, 12:24
общий
это ответ
Здравствуйте, КЕВ!
1) Какая-то странная структура - хотелось бы подробное описание таблицы
2) Выборка в диапазоне выполняется оператором :

where Fild1 BETWEEN data1 and data2

3) Для выборки из даты квартала существуют различные функции зависящие от реализации СУБД. НАпример, в Firebird это функция f_Quarter, которая выдает номер квартала в году
Неизвестный
11.01.2007, 12:27
общий
это ответ
Здравствуйте, КЕВ!
Если я правильно понял объяснения, то - суперская компоновка таблицы. Тот гений, что ее разрабатывал, что-нибудь вааще о нормализации хотя бы слышал. Но это эмоции.
Для последующего использования например в агрегатных функциях как вариант можно использовать union по каждому кварталу:
select year, I from t where year=2001 or year=2002 UNION ALL
select year, II from t where year=2001 or year=2002 UNION ALL
select year, III from t where year=2001 or year=2002 UNION ALL
select year, IV from t where year=2000 or year=2001
Неизвестный
11.01.2007, 17:48
общий
это ответ
Здравствуйте, КЕВ!
Для реализации такого поиска Вам нужна немного другая структура таблицы Данные:
Код
Год
Квартал

Таким образом, для того, чтобы выбрать данные за определенный период, Вам надо будет указать Год и Квартал начала периода и конца периода, за который Вы хотите найти данные. Тогда запрос будет примерно такой:

SELECT * FROM Данные WHERE Год = 2005 AND Квартал between 2 and 4 - этот запрос вам вернет данные о периоде начиная с 2 квартала 2005 года и кончая 4 кварталом 2005 года.
Неизвестный
11.01.2007, 23:07
общий
это ответ
Здравствуйте, КЕВ!
у нас в системе, например, реализовано следующим образом.
отчетные периоды нумеруются код =год + номер отчетного периода, получается обычное целое число,а дальше уже обычный отбор

select * from table where period >=20004 and period <= 20023

На самом деле удобно еще хранить дату начала и окончания периода.
Это позволит сразу определить, к какому отчетному периоду относится та или иная дата.

С уважением, Игорь
Форма ответа