简单SQL查询
本帖最后由 xl_smlie 于 2013-11-22 17:12:32 编辑
--基础表1(这样的一个树形结构):TabZL
kjnd fzdm fzmc
2013 201 mc201
2013 20101 mc20101
2013 2010101 mc2010101
2013 20102 mc20102
2013 2010201 mc2010201
2013 2010202 mc2010202
2013 202 mc202
...
2013 301 mc301
2013 30101 mc30101
2013 30102 mc30102
2013 302 mc302
2013 30201 mc30201
2013 30202 mc30202
...
--业务表TabSJ
kjnd kmdm fzdm4 fzdm5
2013 A001 2010101 30101
2013 A001 2010101 30102
2013 A001 2010102 30101
2013 A001 2010101 30202
...
--希望得到结果表(fzdm4,fzmc4,fzdm5,fzmc5实际上都是基础表TabZL里的,2开头为FZDM4,3开头为
--FZDM5,SFMX:是否明细,0代表:否;1代表:是):
kjnd fzdm4 fzdm4mc fzdm5 fzdm5mc sfmx
2013 201 mc201 0
2013 20101 mc20101 0
2013 2010101 mc2010101 301 mc301 0
2013 2010101 mc2010101 30101 mc30101 1
2013 2010101 mc2010101 30102 mc30102 1
2013 2010101 mc2010101 302 mc302 0
2013 2010101 mc2010101 30202 mc30202 1
2013 2010101 mc2010102 301 mc301 0
2013 2010101 mc2010102 30101 mc30101 1
...
(
SELECT * FROM #TabZL WHERE LEFT([fzdm],1)=2
) a
LEFT JOIN #TabSJ b
ON a.[kjnd]=b.[kjnd] AND [fzdm]=b.[fzdm4]
LEFT JOIN
(
SELECT * FROM #TabZL WHERE LEFT([fzdm],1)=3
)c
ON b.[fzdm5]=c.[fzdm]
----------------结果----------------------------
/*
kjndfzdmfzmckjndkmdmfzdm4fzdm5kjndfzdmfzmcsfmx
2013201mc201NULLNULLNULLNULLNULLNULLNULL0
201320101mc20101NULLNULLNULLNULLNULLNULLNULL0
20132010101mc20101012013A001201010130101201330101mc301011
20132010101mc20101012013A001201010130102201330102mc301021
20132010101mc20101012013A001201010130202201330202mc302021
201320102mc20102NULLNULLNULLNULLNULLNULLNULL0
20132010201mc2010201NULLNULLNULLNULLNULLNULLNULL0
20132010202mc2010202NULLNULLNULLNULLNULLNULLNULL0
2013202mc202NULLNULLNULLNULLNULLNULLNULL0
*/
[解决办法]