Sql server 在SQL Server中复制具有不同日期的数据
我有一个表,有4列和8000行数据,其中有一列为2016-01-05的Sql server 在SQL Server中复制具有不同日期的数据,sql-server,datetime,sql-server-2012,duplicates,Sql Server,Datetime,Sql Server 2012,Duplicates,我有一个表,有4列和8000行数据,其中有一列为2016-01-05的datetime。我想将这8000行数据复制到1月1日到31日的所有日子 也就是说,我应该有8000*31天的数据,即使是相同的数据 如何在不使用Excel文档的情况下执行此操作 通过创建快速日期序列并交叉连接表格,您可以更新表格,但需要: CREATE TABLE #t (c1 INT, c2 INT, c3 INT, c4 INT); INSERT INTO #t VALUES (10, 10, 10, 10),
datetime
。我想将这8000行数据复制到1月1日到31日的所有日子
也就是说,我应该有8000*31天的数据,即使是相同的数据
如何在不使用Excel文档的情况下执行此操作 通过创建快速日期序列并交叉连接表格,您可以更新表格,但需要:
CREATE TABLE #t (c1 INT, c2 INT, c3 INT, c4 INT);
INSERT INTO #t
VALUES (10, 10, 10, 10),
(20, 20, 20, 20);
;
WITH CTE_Dates AS (
SELECT TOP 31
DATEADD(DAY, ROW_NUMBER() OVER (ORDER BY ao.object_id) - 1, '2016-01-01') AS Date
FROM sys.all_objects AS ao
)
SELECT #t.c1,
#t.c2,
#t.c3,
#t.c4,
CTE_Dates.Date
FROM #t
CROSS JOIN CTE_Dates;
首先,创建一个临时日期表,其中包含2016年1月每天的值
CREATE TABLE #TEMPDATE (DateCol DATETIME)
DECLARE @DAY INT = 1
DECLARE @DATE DATE = '2016-01-01'
WHILE @DAY <= 31
BEGIN
INSERT #TEMPDATE
VALUES (@DATE)
SET @DAY +=1
SET @DATE = DATEADD(DD,1,@DATE)
END
您可以通过交叉连接来完成此操作。我会使用一个计数表来进行交叉连接。从您的表格中选择*交叉连接TallyTable where TallyTable。编号谢谢您,先生,我能提供更多详细信息吗。?我已经添加了示例数据的屏幕截图,请看一看。表中有前3列和最后一列DT。SERV_LOC_NUM是我在2016-06-01日期的8000条记录。因此,现在我需要复制2016-06-022016-06-03的前3列数据,依此类推,我如何创建增量日期列并复制这些记录。我将保留记录。它可以做很多事情,并将使您的代码更快。
SELECT c.Column1, c.Column2, c.Column3, t.DateCol
FROM #TEMPDATE t
CROSS JOIN YourTableName c