Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中复制具有不同日期的数据_Sql Server_Datetime_Sql Server 2012_Duplicates - Fatal编程技术网

Sql server 在SQL Server中复制具有不同日期的数据

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

我有一个表,有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),
        (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