2017-08-14 58 views
1

我回来了;)这次我有一个相当繁重的任务(我认为)。总结为每个客户提供的公司(ID)

这里就是我的了:

|customerID ||company |compdel |Street |Code |Date 1  |Date 2  | 
+-------------------------------+--------------------------------------+ 
|1   ||Example1 |DELExam1|ABC Rd.1|4025 |01.01.2015 |01.08.2015 | 
|1   ||Example1 |DELExam1|ABC Rd.1|4025 |13.04.2015 |01.12.2015 | 
|1   ||Example1 |DELExam2|DEL St.1|0212 |13.03.2015 |09.07.2015 | 
|1   ||Example1 |DELExam3|REF Wy.1|9875 |26.05.2015 |16.09.2015 | 
|2   ||Example2 |DELExam4|REG St.1|6754 |21.02.2015 |16.05.2015 | 
|2   ||Example2 |DELExam5|HIO Wy.1|9999 |01.03.2015 |06.08.2015 | 
|2   ||Example2 |DELExam5|HIO Wy.1|9999 |01.01.2015 |06.02.2015 | 

我想告诉每一个的customerID在与时间1的最早日期和日期2.最新的日期一行总结每交付公司(compdel)为了使它更容易理解,我想这样的结果:

|customerID ||company |compdel |Street |Code |Date 1  |Date 2  | 
+-------------------------------+--------------------------------------+ 
|1   ||Example1 |DELExam1|ABC Rd.1|4025 |01.01.2015 |01.12.2015 | 
|1   ||Example1 |DELExam2|DEL St.1|0212 |13.03.2015 |09.07.2015 | 
|1   ||Example1 |DELExam3|REF Wy.1|9875 |26.05.2015 |16.09.2015 | 
|2   ||Example2 |DELExam4|REG St.1|6754 |21.02.2015 |16.05.2015 | 
|2   ||Example2 |DELExam5|HIO Wy.1|9999 |01.01.2015 |06.08.2015 | 

我这个select语句尝试它已经,但它不需额外的工作:我知道,这只能是答案的一部分....

SELECT * 
FROM 
    (SELECT 
     customerID, company, compdel, Street, Code, Date 1, Date 2, 
     ROW_NUMBER() OVER(PARTITION BY compdel ORDER BY customerID) rn 
    FROM 
     table 1) as Y 
WHERE 
    rn = 1 

回答

1

使用GROUP BY有不同的值(客户ID,公司等)和MINMAX的日期

SELECT CustomerId 
    , Company 
    , CompDel 
    , Street 
    , Code 
    , MIN(Date1) As EarliestDate1 
    , MAX(Date2) AS NewestDate2 
FROM YourTable 
GROUP BY CustomerId, Company, CompDel, Street, Code