2012-04-05 11 views
5

Ich habe ein Problem, das ziemlich einfach zu verstehen ist, aber für mich ist es nicht so einfach zu implementieren.Joining zwei Spalten auf einer Tabelle in SQL

Ich habe eine Tabelle mit dem Namen Zeit:

----------------------------------- 
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 
---------------------------------- 

Was ich will bekommen, ist wie:

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

Ich habe versucht, diesen Code:

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

Und es gibt nur die Spalte Zeit zurück. Ich habe keine Ahnung davon, der "Day" Spalte beizutreten. Während ich versuche, die "Tag" nach dem "DISTINCT sub.val" hinzuzufügen, wurde ein Fehler angezeigt. Wie es geht?

Vielen Dank.

+0

@All: Vielen Dank für Ihre Antwort. Es hat mir sehr geholfen, das Problem auf verschiedene Arten zu lösen und den gleichen Wert zu erzielen. :) –

Antwort

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

Vielen Dank für die Antwort. :) –

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

Vielen Dank für die Antwort. :) –

3

versuchen diese

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

Vielen Dank für die Antwort. :) –

2

Diese helfen könnten:

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

Vielen Dank für die Antwort. :) –

+0

Kein Problem. Gut zu helfen: P – Arion

Verwandte Themen