我遇到了这个查询的麻烦,似乎无法在网上找到解决方案。我要做的是在对它们应用联合后从几个表中选择行,然后只将那些行插入到table1中,其中col2和col3(作为一对)在table1中不存在。
INSERT INTO [somedbo].[table1](col1, col2, col3, col4)
SELECT temptbl.MAX(col1), temptbl.col2, temptbl.col3, (temptbl.col2+' '+temptbl.col3)
FROM (
.
.
//sub query with unions. which is working fine.
.
.
) AS temptbl
WHERE not exists(select 1 from temptbl as t where t.col2=table1.col2 AND t.col3=table1.col3)
GROUP BY col2, col3
ORDER BY col2, col3 ASC
我正在使用SQL Server 2005,我收到错误:消息208,级别16,状态1,行1 无效的对象名称'temptbl'。
先谢谢你帮助我。
答案 0 :(得分:2)
您无法在temptbl
子句子查询中引用已命名的子查询WHERE
。
DECLARE @tmptable TABLE (<table definition>)
INSERT INTO @tmptable
SELECT...
<UNION QUERY>
然后像现在一样在查询中使用@tmptable。
答案 1 :(得分:1)
使用WITH子句创建公用表表达式。 http://msdn.microsoft.com/en-us/library/ms175972.aspx