我有以下查询:
select vkbr.vkID, vkbr.bid, vkbr.Date, vkbr.agID
FROM camp c (NOLOCK)
JOIN ag (NOLOCK) ON ag.campID = c.id
JOIN vkbr WITH (NOLOCK) ON vkbr.agID = ag.id
where c.id = 648322
order by vkbr.vkID;
具有以下结果:
vkID bid Date agID
1072845175 NULL 2012-12-04 20:20:12.390 16074852
1072845177 0.74 2012-12-01 23:36:11.280 16074852
1072845177 0.18 2012-12-02 23:01:26.123 16074852
1072845177 0.72 2012-12-09 23:38:52.503 16074852
1072845177 0.62 2012-12-14 15:26:49.643 16074852
1072845178 2.91 2012-12-08 19:37:00.877 16074852
1072845178 0.73 2012-12-13 17:54:11.240 16074852
1072845178 2.70 2012-12-14 15:26:49.643 16074852
为了返回以下行,我使用cte然后使用SELECT:
1072845175 NULL 2012-12-04 20:20:12.390 16074852
1072845177 0.62 2012-12-14 15:26:49.643 16074852
1072845178 2.70 2012-12-14 15:26:49.643 16074852
with cte as
(
select vkbr.vkID, vkbr.bid, vkbr.Date, vkbr.agID, ROW_NUMBER() OVER (PARTITION BY vkbr.vkID ORDER BY vkbr.Date DESC) AS RowNumber
FROM camp c (NOLOCK)
JOIN ag (NOLOCK) ON ag.campID = c.id
JOIN vkbr WITH (NOLOCK) ON vkbr.agID = ag.id
where c.id = 648322
)
select vkID, bid, Date, agID
from cte
where RowNumber = 1
我需要从cte获得出价并将其插入到名为#t:
的现有临时表中insert into #t (bid)
select bid
from cte
where RowNumber = 1
and #t.Date = cte.Date
and #t.agId = cte.agId
and #t.vkId = cte.vkID;
我需要与#t进行这些连接,以确保我为正确的行插入正确的出价;但我收到这个错误:
“多部分标识符”#t.date“不受约束。”
我正在考虑创建另一个临时表,将cte中的行插入到临时表中,然后与#t连接。有没有其他解决方案来做这个没有创建临时表?非常感谢任何帮助。
答案 0 :(得分:0)
即使您要插入#t
,它也不在select
语句的范围内...尝试加入您插入的同一个表来执行此过滤:
insert into #t (bid)
select cte.bid
from cte
join #t
on #t.Date = cte.Date
and #t.agId = cte.agId
and #t.vkId = cte.vkID;
where cte.RowNumber = 1
但是,您确定要执行insert
代替update
吗?
update t
set t.bid = cte.bid
from cte
join #t t
on t.Date = cte.Date
and t.agId = cte.agId
and t.vkId = cte.vkID;
where cte.RowNumber = 1