如何使用sql以编程方式将数据加载到表中
我试图加载过去两年的一些数据,这些数据几乎是静态的,这就是我的意思:如何使用sql以编程方式将数据加载到表中,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图加载过去两年的一些数据,这些数据几乎是静态的,这就是我的意思: Date UserName Hours 1/1/2014 Mike01 10 1/2/2014 Mike01 10 1/3/2014 Mike01 10 1/4/2014 Mike01 10 . . 7/30/2015 Mike01 10 所以用户名和时间总是一样的,我也不想包括周末。我已经花了这么多时间,但无法理解
Date UserName Hours
1/1/2014 Mike01 10
1/2/2014 Mike01 10
1/3/2014 Mike01 10
1/4/2014 Mike01 10
.
.
7/30/2015 Mike01 10
所以用户名和时间总是一样的,我也不想包括周末。我已经花了这么多时间,但无法理解,所以请帮助。谢谢试试这样的东西 因为这里的最大递归可以是731,所以我使用递归CTE来生成日期。还有其他选项可以生成日期,如理货表
WITH cte
AS (SELECT Cast(Cast(Year(getdate())-1 AS CHAR(4)) + '-01-01' AS DATE) AS dates
UNION ALL
SELECT Dateadd(dd, 1, dates)
FROM cte
WHERE dates < dateadd(dd,-1,CONVERT(DATE, Dateadd(dd, -( Day(Getdate()) - 1 ),Getdate())))
)
SELECT dates,
username,
hours
FROM cte
CROSS JOIN (SELECT 'Mike01' AS username,
10 AS hours) A
Where datename(weekday,dates) not in ('saturday','sunday')
option (maxrecursion 0)
注意:在演示中,我从上个月的第一天开始计算日期,这应该可以
IF OBJECT_ID('UsersTable') IS NULL
CREATE TABLE UsersTable ([Date] DATE, UserName VARCHAR(250), [Hours] TINYINT)
GO
DECLARE @Startdt DATETIME = '2013-07-31'
DECLARE @UsersTable TABLE ([Date] DATE, UserName VARCHAR(250), [Hours] TINYINT)
WHILE @Startdt <= GETDATE()
BEGIN
IF DATENAME(weekday, @Startdt) NOT IN ('saturday','sunday')
BEGIN
INSERT INTO @UsersTable
SELECT @Startdt
,'Mike01'
,10
END
SET @Startdt = DATEADD(dd, 1, @Startdt)
END
INSERT INTO UsersTable
SELECT *
FROM @UsersTable vt
WHERE NOT EXISTS (
SELECT 1
FROM UsersTable ut
WHERE ut.[Date] = vt.[Date]
)
SELECT *
FROM UsersTable
DROP TABLE UsersTable
因此,数据已经在一个表中,并且您正在尝试将其传输到另一个表中?您尝试了什么?您是在尝试将数据从一个文件插入到数据库中,还是将数据从一个表插入到另一个表中?您遇到了什么错误?你能展示一下到目前为止你努力的一些成果吗?