2012-04-05 59 views
5

我有一個很容易理解的問題,但對我來說實現起來並不那麼簡單。在SQL中的表上連接兩列

我有一個名爲時間表:

----------------------------------- 
DAY  TIME1  TIME2 
----------------------------------- 
1  08.00  09.40 
1  09.40  10.00 
1  10.00  11.40 
2  08.00  08.50 
2  08.50  10.40 
---------------------------------- 

我想是這樣的:

------------------- 
DAY  TIME  
------------------- 
1  08.00  
1  09.40  
1  10.00  
1  11.00  
2  08.00  
2  08.50  
2  10.40  
------------------ 

我曾嘗試這樣的代碼:

SELECT DISTINCT sub.val FROM (
    SELECT Time1 AS val FROM Time 
    UNION ALL 
    SELECT Time2 AS val FROM Time 
) AS sub 

它只返回Time列。我不知道如何加入「日」列。雖然我試圖在「DISTINCT sub.val」之後添加「Day」,但出現錯誤。怎麼做?

非常感謝。

+0

@All:感謝您對您所有的答案。這對我用很多不同的方式解決問題幫助很大,併產生了相同的價值。 :) – 2012-04-05 13:49:42

回答

5
select distinct day, time1 from mytab 
union 
select distinct day, time2 from mytab 
+1

非常感謝答案。 :) – 2012-04-05 13:51:21

3
SELECT DISTINCT sub.Day, sub.val as Time FROM (
    SELECT Day, Time1 AS val FROM Time 
    UNION ALL 
    SELECT Day, Time2 AS val FROM Time 
) AS sub 
+1

非常感謝您的答案。 :) – 2012-04-05 13:51:27

3

試試這個

SELECT DISTINCT * 
FROM (
    SELECT day, time1 FROM Time 
    UNION ALL SELECT day, time2 FROM Time 
) AS x 
ORDER BY x.day 
+0

非常感謝您的答案。 :) – 2012-04-05 13:51:11

2

這可能幫助:

SELECT 
    DAY, 
    TIME1 
FROM 
    YourTable AS T 
UNION 
SELECT 
    DAY, 
    TIME2 
FROM 
    YourTable AS T 
ORDER BY DAY,TIME1 
+0

非常感謝答案。 :) – 2012-04-05 13:51:37

+0

沒問題。很高興幫助:P – Arion 2012-04-05 13:52:05