SQL 使用STUFF, FOR XML PATH ,CASE WHEN, IN的复杂使用

 SELECT DISTINCT -- 对大量出现的重复数据进行减选

                       A.code,  -- 联查表里某字段
                       (CASE WHEN item_name_ys IS NULL THEN item_name  ELSE item_name_ys+'('+item_name +')' END) as item_name , --用case when 条件 then 值 else 另外的值 end 来编辑字段
 
                        STUFF((SELECT ','+
                            (CASE WHEN build_name_ys IS NULL THEN build_name  ELSE build_name_ys+'('+build_name +')' END) -- 这里不要as 个字段名,因为FOR XML PATH('')会添加<字段名><\字段名>
                             FROM dbo.build_info B  where  B.build_item_code=A.build_item_code  -- 与外层的A字段进行等值比较
                             FOR XML PATH('')),1,1,'')  as  build_name  -- 与外层的A字段进行等值比较后 字段相同的要用FOR XML PATH('')合为一个值并用 STUFF('值',1,1,'')来把值得第一位去掉

                 FROM 

                    enter_info 
                    join
                        item_info on enter_code=item_dev_code 
                    join
                        build_info A on item_code=build_item_code where item_district in('0001','0002')

使用 STUFF ( character_expression , start , length , replaceWith_expression )  进行字段值删减

使用 FOR XML PATH('') 进行多行结果合并生成并拼接成一个值

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值