|
Разность дат в результате запроса | ☑ | ||
---|---|---|---|---|
0
demoninf
24.09.13
✎
13:47
|
Здравствуйте.
В таблице у меня есть одна строка и две колонки, допустим, Дата1 и Дата2, примерно так: Дата1 Дата2 2013-07-01 2013-09-01 Никак не соображу, каким запросом получить из этого такой результат: Дата3 2013-07-01 2013-08-01 2013-09-01 Буду благодарен за идеи. |
|||
1
butterbean
24.09.13
✎
13:48
|
а откуда 2013-08-01 ??
|
|||
2
Maxus43
24.09.13
✎
13:49
|
(1) между ними она
(0) в запросе надо? |
|||
3
demoninf
24.09.13
✎
13:53
|
(2) Да, в запросе надо
|
|||
4
Maxus43
24.09.13
✎
13:56
|
(3) самое простое - использовать ПроизводственныйКалендарь, если есть в конфе. Иначе достаточно муторно... надо создать в запросе таблицу дат, и оттуда дёргать. в СКД есть дополнение периода ещё, надо смотреть
|
|||
5
чувак
24.09.13
✎
14:07
|
(0) Автор, почему именно в запросе? Есть какая та причина весомая?
|
|||
6
demoninf
24.09.13
✎
14:08
|
(4) Календаря нет (БГУ 1.0), итоги ПЕРИОДАМИ тоже не подходят, мне эту ВТ потом в других дальнейших запросах использовать.
(5) Хочется красиво одним запросом все сделать. Не получится - так не получится |
|||
7
Classic
24.09.13
✎
14:16
|
А что значит "между ними"?
если например Дата1 01.01.2013 Дата2 04.01.2013 Что должно быть в Дата3? |
|||
8
Maxus43
24.09.13
✎
14:17
|
(7)
01.01 02.01 03.01 04.01 |
|||
9
Maxus43
24.09.13
✎
14:18
|
хотя не, короче у него каждый месяц надо вывести видимо, между датами. Я сначала подумал по дням, а не месяцам
|
|||
10
demoninf
24.09.13
✎
14:20
|
(7) Только месяца
(9) да, именно так Вроде вот так получилось: [CODE] ВЫБРАТЬ ДАТАВРЕМЯ(2013, 5, 1) КАК ДатаНачала, ДАТАВРЕМЯ(2013, 5, 10) КАК ДатаОкончания ПОМЕСТИТЬ ВТ ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2013, 8, 1), ДАТАВРЕМЯ(2013, 9, 1) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДОБАВИТЬКДАТЕ(Т1.МинНач, МЕСЯЦ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период ИЗ (ВЫБРАТЬ МИНИМУМ(ВТ.ДатаНачала) КАК МинНач, МАКСИМУМ(ВТ.ДатаОкончания) КАК МаксОконч ИЗ ВТ КАК ВТ) КАК Т1 ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd ПО (ИСТИНА) ГДЕ aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(Т1.МинНач, Т1.МаксОконч, МЕСЯЦ) [/CODE] |
|||
11
Classic
24.09.13
✎
14:20
|
(8)
Хочется послушать ТСа:) |
|||
12
demoninf
24.09.13
✎
14:21
|
Сорри за косое форматирование. Буду благодарен, если подскажете, каким тегом здесь правильно форматировать код
|
|||
13
Classic
24.09.13
✎
14:21
|
(10)
Ну да. Делаем сначала кучу месяцов, а потом соединяем. Только я бы всю эту бодягу не копировал. Зачем тебе делать 1000 месяцев? |
|||
14
Classic
24.09.13
✎
14:22
|
Даже 10000
|
|||
15
Maxus43
24.09.13
✎
14:27
|
ага, там таблица дат, по дням. с месяцами легче, их 12 всего
|
|||
16
demoninf
24.09.13
✎
14:29
|
(15) Не известно наверняка, сколько месяцев будет между датами. Для простоты возьму 100
|
|||
17
mistеr
24.09.13
✎
15:53
|
(16) Если ВТ из десяти строк соединить с собой три раза, получится 1000 строк. И т.д.
|
|||
18
demoninf
24.09.13
✎
16:37
|
(17) Ну и пусть, на производительности это не сказывается, в итоге запрос возвращает как раз тот результат, который мне нужен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |