我有一个输入表,它有日期和固定数量的事件。我需要从中创建出现日期的事件列表,以及组合事件及其出现的列表。
示例:
初始表:
CREATE TABLE events (
date DATE PRIMARY KEY,
e1 INTEGER,
e2 INTEGER,
e3 INTEGER
);
date | e1 | e2 | e3 |
--------------------------
2017-02-04 | 2 | 1 | 26 |
2017-02-05 | 14 | 2 | 1 |
2017-02-06 | 1 | 3 | 2 |
输出1
eventN | total | date1 | date2 |...| date'N'
--------------------------------------------------------
01 | 3 | 2017-02-04 | 2017-02-05 |...| 2017-02-06
02 | 2 | 2017-02-05 | 2017-02-06 |...| (null)
...
26 | 1 | 2017-02-04 | (null) |...| (null)
输出2
CobineEventN | total | date1 | ... | date'N'
-----------------------------------------------------
0102 | 2 | 2017-02-05 | ... | 2017-02-06
0103 | 1 | 2017-02-06 | ... | (null)
....
2526 | 1 | 2017-02-04 | ... | (null)
....
限制:
答案 0 :(得分:0)
经过与老师的一些谈话,他指出我的模型从一开始就错了。 将表格更改为:
REATE TABLE event (id integer NOT NULL PRIMARY KEY AUTOINCREMENT, date date NOT NULL, event smallint unsigned NOT NULL);
*'id'是不必要的
类似的东西:
Id date event
31 2016-10-05 1
44 2016-10-07 1
32 2016-10-05 2
我可以使用如下查询:
select A.event as nA, B.event as nB, C.event as nC, date
from event as A, event as B, event as C
where A.date = B.date
and B.date=C.date
and nC<>nA
and nC<>nB
并获得所需的值。
nA nB nC date
1 2 3 2016-10-05
1 2 3 2016-10-07
1 2 4 2016-10-07
...
虽然格式并不完全符合我的想象,但效果还算不错。 而且我不需要为项目的其余部分创建更多列,只需要做正确的查询。
BR