子查询中的多个联接

时间:2018-07-11 02:30:43

标签: sql sql-server subquery ssms

我正在编写一个查询,该查询从另一个表中引入期间,因此如果今年的期间为201901-201912,则明年= 202001-202012,而去年的期间为201801-201812,则为财务期间。

当前总帐期间表显示201903,即2018年6月。我想编写一个查询,以便我可以得到今年的下一年和去年的日期,我的加入只能返回ONE,即今年或明年或去年,但是我希望它返回所有三个。我该怎么做?

SELECT 
yearfrom,
period,
fld_from,
fld_to,
fld_desc,
[ThisYear] = ((select(LEFT(Gl_GLPARAM.PERIOD,4)) from Gl_GLPARAM)),
[LastYear] = ((select(LEFT(Gl_GLPARAM.PERIOD,4))-1 from Gl_GLPARAM)),
[NextYear] = ((select(LEFT(Gl_GLPARAM.PERIOD,4))+1 from Gl_GLPARAM))


FROM GL_YEARPDET
right join (select(LEFT(Gl_GLPARAM.PERIOD,4)) as 'ThisYear' from Gl_GLPARAM) 
as T1 on GL_YEARPDET.YearFrom = t1.ThisYear

我需要以某种方式将上述内容添加到子查询中

right join (select(LEFT(Gl_GLPARAM.PERIOD,4))+1 as 'NextYear' from 
Gl_GLPARAM) as T2 on GL_YEARPDET.YearFrom = t2.NextYear
right join (select(LEFT(Gl_GLPARAM.PERIOD,4))+1 as 'LastYear' from 
Gl_GLPARAM) as T3 on GL_YEARPDET.YearFrom = t3.LastYear

SqlSubqueryresult

SampleTable

1 个答案:

答案 0 :(得分:0)

 FROM GL_YEARPDET
 where YearFrom IN( ((select(LEFT(Gl_GLPARAM.PERIOD,4)) from Gl_GLPARAM)), 
 ((select(LEFT(Gl_GLPARAM.PERIOD,4))-1 from Gl_GLPARAM)), 
 ((select(LEFT(Gl_GLPARAM.PERIOD,4))+1 from Gl_GLPARAM)))

where子句已解决我的问题。

相关问题