2016-09-29 3 views
0

Предположим, есть сырые данные таблицы, как показано ниже:SQL: Объединение строк из в комплекс таблицы

Date | ID | Stats 
9/12 | A | 10 
9/13 | A | 20 
9/13 | B | 5 
9/14 | B | 3 
9/15 | A | 100 
9/16 | A | 200 
9/17 | A | 250 

Я хочу сделать новую таблицу по SQL запроса, как показано ниже сверху:

Start_Date | End_Date | ID | Sum(Stats) 
9/12  | 9/13  | A | 30 
9/13  | 9/14  | B | 8 
9/15  | 9/17  | A | 550 

В этом случае, как я могу написать запрос SELECT?

+1

У вас нет PRIMARY KEY. Таким образом, эта проблема (возможно) неразрешима. – Strawberry

+0

Не будет ли комбинация даты и идентификатора сложным ключом? –

+1

@ScottSellers Да. Это могло бы. Но неясно, что это так, и именно поэтому я предостерег свое предыдущее заявление с заключением в скобки. – Strawberry

ответ

1

Она работает в моих тестах:

select 
    alias1.DATA, 
    alias1.DATA + interval 1 day , 
    alias2.ID, 
    sum(alias2.stats) 
from 
    TEST as alias1 inner join 
    TEST as alias2 on (alias2.data >= alias1.data and alias2.data <= alias1.data + interval 1 day) 

group by alias1.DATA,alias1.DATA + interval 1 day,alias2.ID 
+0

Пожалуйста, обратите внимание, что я предполагаю, что вы всегда хотите эту структуру в каждой строке: Дата, Дата + 1 день, ID_a, сумма (статистика между датой и датой + 1 от ID_a) – Jandisson

+0

Спасибо за любезную помощь. Он почти работает (!), Но данные 9/15 ~ 9/17 из таблицы TEST не работают. :( – HKLee

+0

Как мне грустно, у него всегда будет структура DATE, DATE + 1. – Jandisson