2017-08-30 33 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 
相關問題