有如下表ID,码表, 字段1, 字段2,字段3,条件一般的select查询是 
1  A1     38     48     58   0
2  A1     12     2      56   1
3  A1     34     5      59   2我能不能查如下边这样的结果呢码表  条件  内容
A1     0     38
A1     1     48
A1     2     59
就是根据条件这个字段,分别取 字段1、字段2、字段3 ,以内容这样的一列查出来

解决方案 »

  1.   

    select 
    码表,
    case 条件
    when 0 then 字段1
    when 1 then 字段2
    when 2 then 字段3
    else 0
    end as 内容
    from 表名
      

  2.   

    case when SQL 的视图分析好象不会通过吧
      

  3.   

    除了case when ,没有别的方法了吗?
      

  4.   

    case when 能达到你的要求?
    我看不行要用动态的吧!
      

  5.   

    我这边是跟据一个字段是否为零为判断,不是很复杂,不过有可能有嵌套。
    不过SQL 视图分析器不通过case when
    实在没办法,不知道怎么做了。
      

  6.   

    在查询分析器里写还有问题吗?
    create view vTest
    as 
    select 
    码表,
    case 条件
    when 0 then 字段1
    when 1 then 字段2
    when 2 then 字段3
    else 0
    end as 内容
    from 表名
    go
      

  7.   

    --测试环境
    CREATE TABLE T1(ID INT,F1 VARCHAR(10),F2 INT,F3 INT,F4 INT,F5 INT)
    INSERT T1 SELECT 1,'A1',38,48,59,0
    UNION ALL SELECT 2,'A1',12,2,56,1
    UNION ALL SELECT 3,'A1',34,5,59,2
    --TEST
    SELECT * FROM
    (
    SELECT ID,F1 AS '码表',F5 AS '条件',F2 AS '内容' FROM T1
    UNION ALL
    SELECT ID,F1 AS '码表',F5 AS '条件',F3 AS '内容' FROM T1
    UNION ALL 
    SELECT ID,F1 AS '码表',F5 AS '条件',F4 AS '内容' FROM T1) A
    WHERE A.ID=1