2014-10-06 66 views
0

我一直在試圖找出這種情況下的解決方案。如何在sql查詢中複製每一行

現在我正在試圖創建和單個表

date  date_year, date_month, date_day, weeday_nm, start_time,    end_time 
2014-10-6 2014  10   6   Monday 2014-10-06 00:00:00.000,2014-10-06 23:59:59.000 
2014-10-7 2014  10   7   Tuesday 2014-10-07 00:00:00.000,2014-10-07 23:59:59.000 

在輸出檢索每行中重複的值,我希望看到一個記錄

date  date_year, date_month, date_day, weeday_nm, start_time,    end_time 
2014-10-6 2014  10   6   Monday 2014-10-06 00:00:00.000,2014-10-06 23:59:59.000 
2014-10-6 2014  10   6   Monday 2014-10-06 00:00:00.000,2014-10-06 23:59:59.000 
2014-10-7 2014  10   7   Tuesday 2014-10-07 00:00:00.000,2014-10-07 23:59:59.000 
2014-10-7 2014  10   7   Tuesday 2014-10-07 00:00:00.000, 2014-10-07 23:59:59.000' 
' 
' 
' 
' 
' 

有這麼多行有什麼方法可以完成這種情況?

+0

所以,你必須包含獨特的記錄的表,你想每次重複這些記錄,然後返回一組重複的? – Drew 2014-10-06 14:34:14

+1

不確定你在找什麼,但「union all」可能有幫助。選擇*從我的表聯盟所有選擇* from mytable – NMK 2014-10-06 14:34:42

+0

是的,我有一個表只列出日期的順序,但我希望看到返回值與包含每行重複值的記錄 – Steve 2014-10-09 21:22:52

回答

0

CROSS JOIN添加到包含兩行的表中 - 如果您使用的是SQL Server 2008或更高版本,則最簡單的方法是使用表值構造函數,例如

SELECT t.* 
FROM YourTable AS t 
     CROSS JOIN (VALUES (1), (2)) AS cj (Number) 

如果您使用的是早期版本的使用:

SELECT t.* 
FROM YourTable AS t 
     CROSS JOIN (SELECT Number = 1 UNION ALL SELECT 2) AS cj; 

這種方式可以複製的記錄,而不必讀取表的兩倍。

enter image description here

+0

非常感謝答案,也說明。它完美地工作 – Steve 2014-10-09 21:14:01