我是SQL的新手,非常需要帮助。我有两个表:Fact_Hours和DatePeriod。 我需要在Fact_Hours表中的值YYYYMM中插入值。值来自DatePeriod表。 这是我提出的代码,但它不起作用。我得到了多个错误。
INSERT INTO [dbo].[Fact_Hours]([YYYYMM])
VALUES (SELECT [YYYYMM]
FROM [dbo].[DatePeriod] d
WHERE [dbo].[Fact_Hours].[CDate] = d.[Date])
正确的YYYYMM值是与同一行的Fact_Hours表中的CDate具有相同日期的值。
我真的很感谢你的帮助!
答案 0 :(得分:1)
这是一个常见的错误。 INSERT INTO with SELECT不需要VALUES关键字
INSERT INTO [dbo].[Fact_Hours]([YYYYMM])
SELECT [YYYYMM]
FROM [dbo].[DatePeriod] d
WHERE [dbo].[Fact_Hours].[CDate] = d.[Date]
但SELECT查询需要加入Fact_Hours表,但我们不知道在哪个字段上可以建立两个表之间的关系。
这里有一个例子,假设两个表中都有一列可以用于名为NameOfKeyColumn
的连接
INSERT INTO [dbo].[Fact_Hours]([YYYYMM])
SELECT [YYYYMM]
FROM [dbo].[DatePeriod] d INNER JOIN [dbo].[Fact_Hours] f
ON f.NameOfKeyColumn = d.NameOfKeyColumn
WHERE [dbo].[Fact_Hours].[CDate] = d.[Date]
答案 1 :(得分:0)
你可以试试这个
INSERT INTO [dbo].[Fact_Hours]([YYYYMM])
SELECT [YYYYMM]
FROM [dbo].[DatePeriod] dp INNER JOIN [dbo].[Fact_Hours] fh
ON fh.[CDate] = dp.[Date]