2012-04-05 68 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