Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于别名增量值联接两个SQL表_Sql_Sql Server_Join_Left Join - Fatal编程技术网

基于别名增量值联接两个SQL表

基于别名增量值联接两个SQL表,sql,sql-server,join,left-join,Sql,Sql Server,Join,Left Join,我有一个名为@myTable的表,它返回一个名为am_id的循环增量值。我将一些id为的变量存储在另一个名为@myTableVariable的表中 DECLARE @myTable TABLE (id INT, name varchar(20)) insert into @myTable values(1,'one '),(2,'two '),(3,'three'),(4,'four'),(5,'five'),(6,'six'),(7,'seven'),(8,'eight'),(9,'nin

我有一个名为@myTable的表,它返回一个名为am_id的循环增量值。我将一些id为的变量存储在另一个名为@myTableVariable的表中

DECLARE @myTable TABLE (id INT, name varchar(20))
insert into @myTable values(1,'one  '),(2,'two  '),(3,'three'),(4,'four'),(5,'five'),(6,'six'),(7,'seven'),(8,'eight'),(9,'nine'),(10,'ten'),(11,'eleven'),(12,'twelve'),(13,'thirteen')

DECLARE @myTableVariable TABLE (id INT, name varchar(20))
insert into @myTableVariable values(1,'Roberto'),(2,'Gail'),(3,'Dylan'),(4,'Ben')
select * from @myTableVariable

declare @start decimal(10)=1;
declare @end decimal(10)=4;
declare @increment decimal(10)=1;

SELECT f.name, (@start + @increment * (row_number() over (order by id) - 1) % cast(1 + round((@end - @start) / @increment, 0) as int)) AS am_id
FROM @myTable AS f
我想连接@myTable.am_id=@myTableVariable.id上的两个表,但是无法使用别名连接

SELECT f.name, (@start + @increment * (row_number() over (order by id) - 1) % cast(1 + round((@end - @start) / @increment, 0) as int)) AS am_id
FROM @myTable AS f
LEFT JOIN @myTableVariable AS v ON v.vid = am_id 
你知道我如何加入这些表格吗


非常感谢

使用子查询,然后加入

SELECT * FROM (
SELECT name, (@start + @increment * (row_number() over (order by id) - 1) % cast(1 + round((@end - @start) / @increment, 0) as int)) AS am_id
FROM @myTable) AS f
LEFT JOIN @myTableVariable AS v ON v.id = f.am_id