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
*/
源贴:http://topic.youkuaiyun.com/u/20100416/13/f16dbca1-bce3-41ef-92ed-9ad8dc66936d.html?68445