WEB开发网
开发学院数据库MSSQL Server SQL Server2005杂谈(4):在SQL Server2005中按列... 阅读

SQL Server2005杂谈(4):在SQL Server2005中按列连接字符串的三种方法

 2009-02-21 10:22:27 来源:WEB开发网   
核心提示: 图4然后使用left join,以图4所示的表为最左边的表,SQL Server2005杂谈(4):在SQL Server2005中按列连接字符串的三种方法(3),进行连接,SQL语句如下:selecta.xh,b.th1,c.th2,d.th3from(selectxhfromt_tab

图4

然后使用left join,以图4所示的表为最左边的表,进行连接,SQL语句如下:

selecta.xh,b.th1,c.th2,d.th3from
(selectxhfromt_tablegroupbyxh)a
leftjoin
(selectxh,valueasth1fromt_tablewhereth=1)bona.xh=b.xh
leftjoin
(selectxh,valueasth2fromt_tablewhereth=2)cona.xh=c.xh
leftjoin
(selectxh,valueasth3fromt_tablewhereth=3)dona.xh=d.xh

之所以使用left join,是因为按着th查询后,有的表的某些xh值可以没有,如图3中的第三个表,就没有0003。如果使用内连接,0003就无法在记录集中体现。这面的SQL的查询结果如图5所示。

SQL Server2005杂谈(4):在SQL Server2005中按列连接字符串的三种方法

图5

然后我们就可以使用如下的语句来连接th1、th2和th3了。 

selectxh,(th1+th2+th3)asthfrommyview

myview表示将上面用left join的语句保存成的视图。

下面可以将这个过程写成一条SQL语句:

selectxh,(th1+th2+th3)asthfrom
(
selecta.xh, (casewhenb.th1isnullthen''elseb.th1end)asth1,
(casewhenc.th2isnullthen''elsec.th2end)asth2,
(casewhend.th3isnullthen''elsed.th3end)asth3
from
(selectxhfromt_tablegroupbyxh)a 
leftjoin
(selectxh,valueasth1fromt_tablewhereth=1)bona.xh=b.xh
leftjoin
(selectxh,valueasth2fromt_tablewhereth=2)cona.xh=c.xh
leftjoin
(selectxh,valueasth3fromt_tablewhereth=3)dona.xh=d.xh
)x

上一页  1 2 3 4 5 6  下一页

Tags:SQL Server 杂谈

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接