原帖:http://blog.csdn.net/htl258/archive/2010/04/16/5493691.aspx
declare @x xml
set @x = '
<ROOT>
<SM>
<SMID>88</SMID>
<SMCD>A5</SMCD>
<SMNM> 刘洋 </SMNM>
<NDS>
<ND>
<SF>3</SF>
<NDID>88</NDID>
<NDCD>A5</NDCD>
<NDNM> 林林 </NDNM>
<CDST>
<tR1>1</tR1>
<tR2>2</tR2>
<tR3>3</tR3>
<tR4>4</tR4>
<tR5>5</tR5>
<tR6>6</tR6>
<tR7>7</tR7>
<tR8>8</tR8>
<tR9>9</tR9>
<tt2>1</tt2>
<tt130>2</tt130>
<t132>3</t132>
<t155>4</t155>
</CDST>
</ND>
</NDS>
</SM>
<SM>
<SMID>84</SMID>
<SMCD>A6</SMCD>
<SMNM> 陈真 </SMNM>
<NDS>
<ND>
<SF>3</SF>
<NDID>84</NDID>
<NDCD>A6</NDCD>
<NDNM> 陈真 </NDNM>
<CDST>
<tR2>9</tR2>
<tR3>8</tR3>
<tR4>7</tR4>
<tR5>6</tR5>
<tR6>5</tR6>
<tR7>4</tR7>
<tR8>3</tR8>
<tR9>2</tR9>
<t12dd>1</t12dd>
<tt2>2</tt2>
<tt130>3</tt130>
<t132>4</t132>
<t155>5</t155>
</CDST>
</ND>
</NDS>
</SM>
<SM>
<SMID>45</SMID>
<SMCD>D1</SMCD>
<SMNM> 曹曹 </SMNM>
<NDS>
<ND>
<SF>3</SF>
<NDID>45</NDID>
<NDCD>D1</NDCD>
<NDNM> 曹曹 </NDNM>
<CDST>
<tR2>1</tR2>
</CDST>
</ND>
</NDS>
</SM>
</ROOT>'
--按照<NDID>节点的值取出其下<CDST>节点中所有的节点名称
--如: NDID节点值为84(<NDID>84</NDID>)
SELECT t . x . value ( 'local-name(.)' , 'varchar(200)' ) as 节点名称 ,
t . x . value ( '.' , 'varchar(200)' ) AS 节点值
FROM @x . nodes ( '//ND[./NDID = "84"]/CDST/*' ) as t ( x );
/*
节点名称 节点值
tR2 9
tR3 8
tR4 7
tR5 6
tR6 5
tR7 4
tR8 3
tR9 2
t12dd 1
tt2 2
tt130 3
t132 4
t155 5
*/