2017-02-28 58 views
1

我有一个表如下,集团岛查询与停产期间

create table #ph (symbol char(2), FisrtDate date, LastDate, value1 int, value2 int, value3 int) 
insert into #ph select AA, '20120101', '20130201', 1, 1000, 200 
insert into #ph select AA, '20130202', '20150101', 2, 300, 500 
insert into #ph select AA, '20150102', '20170101', 2, 300 , 500 
insert into #ph select AB, '20120104', '20150101', 1, 200, 500 
insert into #ph select AB, '20150104', '20170101', 1, 200, 500 
insert into #ph select AB, '20170106', '20170201', 1, 300, 500 

而且我想要的输出一样,

Symbol | date_from| date_to | value1 | value2 | value3 
    AA | 20120101 | 20130201 | 1  | 1000 | 200 
    AA | 20130202 | 20170101 | 1  | 300 | 500 
    AB | 20120104 | 20170101 | 1  | 200 | 500 
    AB | 20120106 | 20170201 | 1  | 300 | 500 

我要找组岛屿的问题,但我很困惑。

+7

我认为你需要解释一下你的“群岛”,以及它如何适用于这个数据是什么意思。 –

回答

4

看看你的数据,如果我理解正确,你想显示MIN,MAX日期的行没有改变value1,value2和value3?

如果是这样,那么简单GROUP BY应该做的:

SELECT symbol, MIN(FirstDate), MAX(LastDate), value1, value2, value3 
    FROM #ph 
GROUP BY symbol, value1, value2, value3 
+0

你说得对。这么简单,我在脑海里一团糟。非常感谢。 –