Соединение двух столов в улье - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть таблица, в которой я разбил дату на год, месяц и дату

'ABC' Разделение на

(year = '2011', month = '08 ',day = '01 ')

Я хочу выполнить запрос наподобие

select * from ABC where dt>='2011-03-01' and dt<='2012-02-01';

Как мне выполнить этот запрос с приведенной выше схемой разбиения в терминах года, месяца и дня

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012

Вы можете подумать о создании внешней таблицы, которая разделена на 'yyyy-mm-dd' и использует те же места, что и ваша существующая таблица. Вам не нужно будет копировать какие-либо данные, и вы будете иметь гибкость обоих форматов разделения.

0 голосов
/ 25 апреля 2012
select * from ABC where year='2011' and month >= '03'
UNION
select * from ABC where year='2012' and month = '01'
UNION
select * from ABC where year='2012' and month='02' and day='01';

Приведенный выше запрос должен решить задачу, но на самом деле он не является ни гибким, ни хорошо читаемым. Как предложил Мэтт, лучшим форматом разделения будет использование одной строковой переменной в формате yyyy-MM-dd в качестве столбца разделения. Однако вам может потребоваться сделать копию данных, если вы измените схему разбиения на год, месяц, день и т. Д. На мой взгляд, оно того стоит.

...