为什么我的代码不合并表1到表2的底部?


SELECT * INTO "2020_to_2021_divvy_tripdata"
FROM
(MERGE [PortfolioDB].[dbo].['202008-divvy-tripdata$'] as "202008"
USING [PortfolioDB].[dbo].['202007-divvy-tripdata$'] as "202007" on [202007].ride_id = [202008].ride_id
WHEN NOT MATCHED THEN
INSERT VALUES ([202008].*)

我希望它从202008年的数据并合并到202007年,以便一个表简单地合并到另一个表的底部,但它说*附近的语法不正确。我已经尝试了所有以前的工具包,如改变方括号组合等。

两个表的格式相同,列名匹配。

我试着从这里模仿代码。最后,我将合并多个月份,以创建一个全年表。

你的INSERT VALUES()有两个问题…

  1. 您应该从[202007](源)插入,而不是从[202008](目标)插入
  2. 不能使用[202007].*,必须单独列出所有列

然后,您需要MERGEOUTPUT子句以使其数据可用于外部查询。


下面是一个示例:db<>fiddle

这是你的声明的潜在重写…

INSERT INTO
"2020_to_2021_divvy_tripdata"
SELECT
*
FROM
(
MERGE [PortfolioDB].[dbo].['202008-divvy-tripdata$'] as "202008"
USING [PortfolioDB].[dbo].['202007-divvy-tripdata$'] as "202007"
ON [202007].ride_id = [202008].ride_id
WHEN NOT MATCHED THEN
INSERT VALUES ([202007].x, [202007].y, [202007].z)
OUTPUT
inserted.*
)
merge_inserted

最新更新