2017-08-30 34 views
1

我有问题让列排队,start_time是end_time之上的一行。SQL帮助。如何排列同一行上的值,将一列向上移动?

这是我的代码:

SELECT B.NAME 
     ,MAX(case when DESCRIPTION = 'Green' then Final_Value end) as Start_Time 
     ,MAX(case when DESCRIPTION = 'Red' then Final_Value end) as End_Time 
      FROM mydata a 
      JOIN ref_val B 
      ON A.ref_res = B.ref_res  
     WHERE B.COMPANY = 'abc' 
     GROUP BY B.NAME 

这就是我想要得到

The result looks like this: 
    Name  Start_time    End_time   
1 John  5/6/15 6:30 
2 John2  5/7/15 4:30   5/6/15 8:30   
3 Ben   5/8/15 2:30   5/7/15 7:25 
4 Ben2  5/9/15 3:10   5/8/15 4:10 

I want it to look like this: 

    Name  Start_time    End_time    
1 John  5/6/15 6:30   5/6/15 8:30 
2 John2  5/7/15 4:30   5/7/15 7:25   
3 Ben   5/8/15 2:30   5/8/15 4:10 
4 Ben2  5/9/15 3:10   5/9/15 5:20 
+1

您的模式是什么? – kmoser

+1

您可能希望在查询之前显示示例数据 –

回答

0

一个模式会有所帮助,但我怀疑是驱动表不应该是mydata A,而是ref_val b,使集团通过与MAX更有意义。根据实际模式,我可能完全错误:

SELECT B.NAME 
    ,MAX(case when DESCRIPTION = 'Green' then Final_Value end) as Start_Time 
    ,MAX(case when DESCRIPTION = 'Red' then Final_Value end) as End_Time 
     FROM ref_val B 
     JOIN mydata A 
     ON A.ref_res = B.ref_res  
    WHERE B.COMPANY = 'abc' 
    GROUP BY B.NAME 
相关问题