以上是两张表原始表
我通过一个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′…′FROMHKprofit.dbo.”Sheet1” ‘…
‘left join HKprofit.dbo.”Sheet2"onHKprofit.dbo."Sheet2”.CompanyCode = HKprofit.dbo.”Sheet1”.CompanyCode‘…‘leftjoinHKprofit.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”.EndDtbetween”′,endday,”′and”′,day,””…′AND(HKprofit.dbo.”Sheet1".InfoSource=''年度报告''or HKprofit.dbo."Sheet1”.InfoSource=”招股章程”)′…′andHKprofit.dbo.”Sheet1”.DtTypeCd=12’…
’ and HKprofit.dbo.”Sheet1”.AdjFlg=0′…′andHKprofit.dbo.”Sheet1”.CompanyCode in (‘,bb,’)’…
’ and Hkprofit.dbo.”balance”.ConFlg=1′…′orderbyHKprofit.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语句也可以。多谢!