合并表法

  1. /*合并法系列*/
  2. --合并法(函数)
  3. createtabletb1
  4. (
  5. col1varchar(10),
  6. col2int
  7. )
  8. insertintotb1select'a',1
  9. unionallselect'a',2
  10. unionallselect'b',1
  11. unionallselect'b',2
  12. unionallselect'b',3
  13. createfunctiondbo.FC_Str(@col1varchar(100))
  14. returnsvarchar(100)
  15. as
  16. begin
  17. declare@ivarchar(100)
  18. set@i=''
  19. select@i=@i+','+cast(col2asvarchar)fromtb1wherecol1=@col1
  20. return(stuff(@i,1,1,''))
  21. end
  22. selectcol1,dbo.FC_Str(col1)fromtb1groupbycol1
  23. --固定行合并法
  24. createtable#tb
  25. (
  26. col1varchar(10),
  27. col2int
  28. )
  29. insertinto#tbselect'a',1
  30. unionallselect'a',2
  31. unionallselect'b',1
  32. unionallselect'b',2
  33. unionallselect'c',3
  34. selectcol1,
  35. col2=cast(min(col2)asvarchar)+
  36. casewhencount(*)=1then''
  37. else+','+cast(max(col2)asvarchar)endfrom#tb
  38. groupbycol1
  39. --临时表合并法
  40. ifobject_id('tb')isnotnulldroptabletb
  41. createtabletb
  42. (
  43. col1varchar(10),
  44. col2int
  45. )
  46. insertintotbselect'a',1
  47. unionallselect'a',2
  48. unionallselect'b',1
  49. unionallselect'b',2
  50. unionallselect'b',3
  51. selectcol1,col2=cast(col2asvarchar(100))into#t1fromtborderbycol1,col2
  52. declare@col1varchar(20)
  53. declare@col2varchar(100)
  54. update#t1set@col2=
  55. casewhen@col1=col1then@col2+','+col2
  56. elsecol2end,
  57. @col1=col1,
  58. col2=@col2
  59. select*from#t1
  60. selectcol1,col2=max(col2)from#t1groupbycol1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值