热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQL列转行问题

问题

问题


















 

楼主发表于:2010-03-26 10:32:53
















表A
tid           湖北         湖南             广东
  1           001           002           003
  2           001           002           003
  3           001           002           null
  4           001           null         003
  5           001           na             003  
....
表B
tid                address             状态
  1                 湖北                 test
  1                 湖南                 null
  1                 广东                 test

  2                 湖北                 na
  2                 湖南                 null
  2                 广东                 test

  3                 湖北                 test
  3                 湖南                 test
  3                 广东                 test

  4                 湖北                 null
  4                 湖南                 test
  4                 广东                 null

  5                 湖北                 test
  5                 湖南                 test
  5                 广东                 na


下面要求表C

表C:
tid               address              状态
  1                 湖南                 null
  2                 湖北                 na
  2                 湖南                 null
  4                 湖北                 null
  4                 广东                 null
  4                 广东                 na

逻辑:表A和表B中TID是关联字段,现在要求   表A中列有值(na或者null都是无值的)表B中TID所对应的行中状态列没有值的数据
表A中的列对应表B中的行   表A中每一列代表表B中一行

求SQL   列转行   通过A,B表求C表

逻辑有点复杂,有不明白的,我再补充说明。
     






最佳回答



代码

1 CREATE TABLE #TEST_A (TID CHAR(2),ADDRESS CHAR(10),STATUS CHAR(10))
2  INSERT INTO #TEST_A
3 SELECT TID, '湖北', 湖北 FROM A
4 INSERT INTO #TEST_A
5 SELECT TID, '湖南', 湖南 FROM A
6 INSERT INTO #TEST_A
7 SELECT TID, '广东', 广东 FROM A
8 --如果数据太多,可以使用动态的。
9
10 SELECT B.TID,B.ADDRESS,B.状态
11 FROM B
12 INNER JOIN #TEST_A
13 ON #TEST_A.TID=B.TID
14 AND #TEST_A.ADDRESS = B.ADDRESS
15 AND (#TEST_A.STATUS<>'NA' OR #TEST_A.STATUS<>NULL)
16 WHERE (B.状态=NULL OR B.状态='NA')

 



推荐阅读
author-avatar
华东师大中北文艺部
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有