• EVAN   2014/11/26 13:18:00
  • SQLServer中如何实现行转列?
  • 关键字: 行转列 SQLServer 数据转换
  • 问题:SQLServer中如何实现行转列?
     有如下隔水炖的表jizhan

    region cellstation zaipinfujiao tianxian
    建邺 应天路1 应天路 5 690
    建邺 应天路2 应天路 6 9200
    建邺 应天路3 应天路 3 6310
    玄武 1101厂1 1101厂 3 8 310
    玄武 1101厂2 1101厂 3 10 90
    玄武 1101厂3 1101厂 4 8 230
    白下 511招待所1 511招待所 4 12 340
    白下 511招待所2 511招待所 4 11 140
    白下 511招待所3 511招待所 6 12 240


    需要转换成如下格式

    region stationzaipin fujiaotianxian
    白下 511招待所 4/4/6 12/11/12340/140/240
    白下 八宝前街 5/7 14/14 90/260
    白下 白下安居 6/4/3/2 13/6/6/220/130/240/280
    白下 白下工业园T 3/6/4 9/9/8 0/120/240
    白下 白下路 4/5/5 7/10/13 300/120/260
    白下 白下社区中心RRH 6/6 10/10 70/330
    白下 仓波门 5/6/2 6/6/6 0/120/240
    白下 长白街 7/8/7 17/17/1410/180/250
    白下 超级基站-江宁移动_备8/6/6 12/12/100/120/240

    方法:

    1. CREATE FUNCTION zaipin_COMBINESTR(@region varchar(50),@station varchar(100))  
    2. RETURNS NVARCHAR(100)  
    3. AS   
    4. BEGIN  
    5.   DECLARE  @SQL NVARCHAR(100)  
    6.   SET @SQL=N''  
    7.   SELECT @SQL=@SQL+N'/' + zaipin FROM jizhan WHERE region=@region and station=@station  
    8.   RETURN STUFF(@SQL,1,1,'')  
    9. END  
    10. GO  
    11.   
    12. CREATE FUNCTION fujiao_COMBINESTR(@region varchar(50),@station varchar(100))  
    13. RETURNS NVARCHAR(100)  
    14. AS   
    15. BEGIN  
    16.   DECLARE  @SQL NVARCHAR(100)  
    17.   SET @SQL=N''  
    18.   SELECT @SQL=@SQL+N'/' + fujiao FROM jizhan WHERE region=@region and station=@station  
    19.   RETURN STUFF(@SQL,1,1,'')  
    20. END  
    21. GO  
    22.   
    23.   
    24. CREATE FUNCTION tianxian_COMBINESTR(@region varchar(50),@station varchar(100))  
    25. RETURNS NVARCHAR(100)  
    26. AS   
    27. BEGIN  
    28.   DECLARE  @SQL NVARCHAR(100)  
    29.   SET @SQL=N''  
    30.   SELECT @SQL=@SQL+N'/' + tianxian FROM jizhan WHERE region=@region and station=@station  
    31.   RETURN STUFF(@SQL,1,1,'')  
    32. END  
    33. GO  
    34. SELECT region,station,zaipin=DBO.zaipin_COMBINESTR(region,station),fujiao=DBO.fujiao_COMBINESTR(region,station),tianxian=DBO.tianxian_COMBINESTR(region,station) FROM jizhan GROUP BY region,station  

大家的回答
  • 还没有人回答这个问题哦,亲,快来帮帮TA吧
  •   我来回答
  • 注册用户登录后才能发表评论,请 登录注册
  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 相关话题
  • 暂无相关话题哦