返回 登录
0

通过左加检索sql数据库的方法。

数据库sheet1表
数据库balance表
以上是两张表原始表
我通过一个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.EndDtFROMHKprofit.dbo.Sheet1” ‘…
‘left join HKprofit.dbo.”Sheet2"onHKprofit.dbo."Sheet2”.CompanyCode = HKprofit.dbo.”Sheet1.CompanyCodeleftjoinHKprofit.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=0andHKprofit.dbo.Sheet1”.CompanyCode in (‘,bb,’)’…
’ and Hkprofit.dbo.”balance.ConFlg=1orderbyHKprofit.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语句也可以。多谢!

评论