Sql server SQL Server:在一个字段不同的位置插入复杂的select查询
我试图从多个表中选择值并将它们插入到另一个表中。其中一个值应该是不同的。我如何使用CTE实现这一点 我的问题是:Sql server SQL Server:在一个字段不同的位置插入复杂的select查询,sql-server,tsql,Sql Server,Tsql,我试图从多个表中选择值并将它们插入到另一个表中。其中一个值应该是不同的。我如何使用CTE实现这一点 我的问题是: insert into Cycle (CycleID, PlotID, Product, Variety, Start, End) Select CycleID, o.ID, 'Product', v.ID, t.Start, t.End from Import as t inner join Varieties as v on t.Name like v.Name inner
insert into Cycle (CycleID, PlotID, Product, Variety, Start, End)
Select CycleID, o.ID, 'Product', v.ID, t.Start, t.End
from
Import as t
inner join Varieties as v
on t.Name like v.Name
inner join Plots as o
on t.PlotCode like o.PlotCode
我必须在t.CycleID不同的地方创建这个仅选择条目。一个可能的SQL技巧是使用带领带的
top 1与按行顺序编号组合使用
;WITH CTE AS (
Select DISTINCT CycleID, o.ID, 'Product', v.ID, t.Start, t.[End]
from
Import as t
inner join Varieties as v
on t.Name like v.Name
inner join Plots as o
on t.PlotCode like o.PlotCode )
insert into Cycle
(CycleID, PlotID, Product, Variety, Start, [End] )
Select CycleID, PlotID, Product, Variety, Start, [End] from CTE
GROUP BY CycleID, PlotID, Product, Variety, Start, End
insert into Cycle (CycleID, PlotID, Product, Variety, Start, End)
Select top 1 with ties CycleID, o.ID, 'Product', v.ID, t.Start, t.End
from Import as t
inner join Varieties as v on t.Name like v.Name
inner join Plots as o on t.PlotCode like o.PlotCode
order by row_number() over (partition by CycleID order by o.ID desc, v.ID desc, t.Start desc, t.End desc)
免责声明:仅在记事本中测试@BorisK Btw,您真的需要在这些连接中使用LIKE吗?除非是故意的,并且v.Name和o.PlotCode的字符串带有%
或
(f.e.“x%y%1_2”),否则使用=
可以让查询优化器想出更快的执行计划。啊,当然。我正在处理非常小的数据集,几百条记录,但会记住以后使用。