似乎找不到语法错误
Cant seem to find the Syntax error
有人能告诉我我做错了什么吗,我在附近得到了不正确的语法。声明有什么问题?
INSERT INTO dbo.a1
select x1 as id, x2 as enc_id, x3 as dev,x4 as mang, x4 as sre, x5 as phase,x6, x7, x8
from
(select *,
row_number() over(partition by x2 order by x8) as rank
from ccsm.n9 where xx=1 and xx_pat=1 and xx_encz='Tesz')
where rank=1;
您从未告诉我们您使用的 SQL 是什么版本,但一种可能是您派生的 table 需要一个别名:
INSERT INTO dbo.a1
SELECT t.x1, t.x2, t.x3, t.x4, t.x4, t.x5, t.x6, t.x7, t.x8
FROM
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY x2 ORDER BY x8) AS rank
FROM ccsm.n9
WHERE xx = 1 and xx_pat = 1 and xx_encz = 'Tesz'
) t
WHERE t.rank = 1;
我知道 Oracle 强制执行派生的 table 别名规则,可能还有其他数据库。请注意,您在 SELECT
语句中使用的别名没有任何用处,因为这些值只是被插入。如果您想插入 x4
两次,那么只需重复两次即可。
有人能告诉我我做错了什么吗,我在附近得到了不正确的语法。声明有什么问题?
INSERT INTO dbo.a1
select x1 as id, x2 as enc_id, x3 as dev,x4 as mang, x4 as sre, x5 as phase,x6, x7, x8
from
(select *,
row_number() over(partition by x2 order by x8) as rank
from ccsm.n9 where xx=1 and xx_pat=1 and xx_encz='Tesz')
where rank=1;
您从未告诉我们您使用的 SQL 是什么版本,但一种可能是您派生的 table 需要一个别名:
INSERT INTO dbo.a1
SELECT t.x1, t.x2, t.x3, t.x4, t.x4, t.x5, t.x6, t.x7, t.x8
FROM
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY x2 ORDER BY x8) AS rank
FROM ccsm.n9
WHERE xx = 1 and xx_pat = 1 and xx_encz = 'Tesz'
) t
WHERE t.rank = 1;
我知道 Oracle 强制执行派生的 table 别名规则,可能还有其他数据库。请注意,您在 SELECT
语句中使用的别名没有任何用处,因为这些值只是被插入。如果您想插入 x4
两次,那么只需重复两次即可。