以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于SQL语句中stuff的用法  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=143535)

--  作者:ap9709130
--  发布时间:2019/11/27 22:06:00
--  关于SQL语句中stuff的用法
 老师

我的表结构如下:
            表名  a
              dw (列名)   备注列
             34,56
             78,88
 SQL 语句  se lec t stuff((s el ec t \',\' +CAST(dw as varchar) from {a} Order by _Identify For xml path(\'\')),1,1,\'\')) as dw1 from {a}

        得到结果: 34,56,78,88

     这个结果正好是我想要的 另外一个表b 的_Identify的值   我想要得到  s ele ct 价格 from {b} where _Identify in (34,56,78,88)

    要怎么才能用上第一个语句的结果,来得到 s el e ct 价格 from {b} where _Identify in (34,56,78,88) ?

   
 
    

  

--  作者:有点蓝
--  发布时间:2019/11/27 22:28:00
--  
恰恰相反,这种情况不能使用合并,而是拆分

with roy as  
 (select [dw]=cast(left([dw],charindex(\',\',[dw]+\',\')-1) as nvarchar(100)),Split=cast(stuff([dw]+\',\',1,charindex(\',\',[dw]+\',\'),\'\') as nvarchar(100)) from [表A]
 union all 
 select [dw]=cast(left(Split,charindex(\',\',Split)-1) as nvarchar(100)),Split= cast(stuff(Split,1,charindex(\',\',Split),\'\') as nvarchar(100)) from Roy where split>\'\' 
 ) 
 select * from [表B] where [_Identify] in (select [dw] from roy ) option (MAXRECURSION 0)