以上是两张表原始表
我通过一个left join 将两张表同一个stockid 同一年度EndDt 的PrfAttrShrhold 和 SHE 检索出来形成一个新表。代码如下:(这是matlab中的sql语句。只是多了一些标点。sql语句熟的老师一看就明白。)
curs = exec(conn, ['SELECT HKprofit.dbo."Sheet1$".CompanyCode'...
' , HKprofit.dbo."Sheet2$".stockid'...
', HKprofit.dbo."balance$".SHE'...
', HKprofit.dbo."Sheet1$".PrfAttrShrhold'...
', HKprofit.dbo."Sheet1$".EndDt'...
' FROM HKprofit.dbo."Sheet1$" '...
'left join HKprofit.dbo."Sheet2$" on HKprofit.dbo."Sheet2$".CompanyCode = HKprofit.dbo."Sheet1$".CompanyCode '...
'left join HKprofit.dbo."balance$" on HKprofit.dbo."balance$".EndDt=HKprofit.dbo."Sheet1$".EndDt'...
' and HKprofit.dbo."balance$".InfoSource=HKprofit.dbo."Sheet1$".InfoSource'...
' and HKprofit.dbo."balance$".AdjFlg=HKprofit.dbo."Sheet1$".AdjFlg'...
' and HKprofit.dbo."balance$".CompanyCode = HKprofit.dbo."Sheet1$".CompanyCode'...
' WHERE HKprofit.dbo."Sheet1$".EndDt between ''',end_day,''' and ''',day,'''' ...
' AND ( HKprofit.dbo."Sheet1$".InfoSource=''年度报告''or HKprofit.dbo."Sheet1$".InfoSource=''招股章程'')'...
' and HKprofit.dbo."Sheet1$".AdjFlg=0'...
' and HKprofit.dbo."Sheet1$".CompanyCode in (',bb,')'...
' and Hkprofit.dbo."balance$".ConFlg = 1'...
'order by HKprofit.dbo.Sheet1$.CompanyCode'...
', HKprofit.dbo.Sheet1$.EndDt'])
curs = fetch(curs);
close(curs);
%Assign data to output variable
b = curs.Data;
检索结果如下图
我希望得到的检索结果是SHE比PrfAttrShrhold要早一年。即2014年的SHE和2015年的PrfAttrShrhold放在一行。2013年的SHE和2014年的PrfAttrShrhold放在一行。结果如下图。
请问我应该如何修改sql结果。希望不从根本上修改目前的sql语句结构。matlab不熟悉的老师,直接给出sql语句也可以。多谢!