SQL финансовые даты, плоские файлы, страдания - PullRequest
1 голос
/ 22 марта 2011

Использование sqlite3, python

У меня дерьмовый устаревший файл legacy_sales :

item | year | week | mon | tue | wed | thu | fri | sat |sun 
4444   2011     29    10    0     4    15     18    25   30

И у меня есть потрясающий новый файл sales (это пример записи 'mon' сверху):

item | units |     date
4444   10       2011-03-14

У меня есть дата начала финансового года в другой таблице fiscal

year | start_date
2011   2010-08-30

С этой информацией, какой самый лучший и самый эффективный способ сделать это:

insert into sales from (insert magic here) 

без использования UDF ...

Есть ли у вас какой-нибудь опыт с такой ерундой?

Ответы [ 2 ]

1 голос
/ 22 марта 2011
insert into sales from (
    -- here be magic
    select  item, units, DATEADD(day, DayInYear, start_date)
    from    (
        select  item,
                year,
                (week - 1) * 7 + 0 as DayInYear,
                mon as Units
        from    legacy_sales
        union all
        select  item, year, (week - 1) * 7 + 1, tue
        from    legacy_sales
        union all
        select  item, year, (week - 1) * 7 + 2, wed
        from    legacy_sales
        union all
        select  item, year, (week - 1) * 7 + 3, thu
        from    legacy_sales
        union all
        select  item, year, (week - 1) * 7 + 4, fri
        from    legacy_sales
        union all
        select  item, year, (week - 1) * 7 + 5, sat
        from    legacy_sales
        union all
        select  item, year, (week - 1) * 7 + 6, sun
        from    legacy_sales
        ) ls
        inner join fiscal on
            fiscal.year = ls.year
)
0 голосов
/ 22 марта 2011

преобразование из: legacy_sales

item | year | week | mon | tue | wed | thu | fri | sat |sun 
4444   2011     29    10    0     4    15     18    25   30

до: продажи

item | units |     date
4444   10       2011-03-14

с нуждами по английскому питону:

for row in legacy_sales:
    year = row['year']
    week = row['week']
    for day_name in "mon | tue | wed | thu | fri | sat |sun".split(" | "):
        some how turn (year, week, day_name) into year_month_day
        insert into sales values (row['item'], row[day_name], year_month_day)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...