sex          A                  B
男           12                 0
女            0                  23
女            0                  21
男           31                 0
男           24                  0根据sex字段的判断。男的取A字段的数值。女的取B字段的数值。
最后能查出以下这种效果。怎么写   不要sum  有时男的B里面可能会有数据。但不要,只要A列。
sex          C  
男           12 
女           23 
女            21 
男           31 
男           24   请问select语句怎么写。。有大神帮帮忙吗

解决方案 »

  1.   

    select sex, case when sex='男' then A  else B end as Qty from table自己弄出来了。
      

  2.   

    USE tempdb
    GO
    IF OBJECT_ID('dbo.[t]') IS NOT NULL 
    DROP TABLE dbo.[t]
    GO
    CREATE TABLE dbo.[t](
    [sex] NVARCHAR(2)
    ,[A] INT
    ,[B] INT
    )
    GO
    SET NOCOUNT ON
    INSERT INTO dbo.[t] VALUES(N'男',N'12',N'0')
    INSERT INTO dbo.[t] VALUES(N'女',N'0',N'23')
    INSERT INTO dbo.[t] VALUES(N'女',N'0',N'21')
    INSERT INTO dbo.[t] VALUES(N'男',N'31',N'0')
    INSERT INTO dbo.[t] VALUES(N'男',N'24',N'0')
    GO
    ------------ 以上为测试表及测试数据 -------------------方法1:添加一个计算列,以后不需要再转换,推荐使用
    ALTER TABLE t ADD C AS CASE WHEN sex='男' THEN A ELSE B ENDSELECT * FROM t
    /*
    sex  A           B           C
    ---- ----------- ----------- -----------
    男    12          0           12
    女    0           23          23
    女    0           21          21
    男    31          0           31
    男    24          0           24
     */
    --方法2: 
    SELECT  sex
    ,A
    ,B
    ,CASE WHEN sex='男' THEN A ELSE B END AS C2
    FROM t
    /*
    sex  A           B           C2
    ---- ----------- ----------- -----------
    男    12          0           12
    女    0           23          23
    女    0           21          21
    男    31          0           31
    男    24          0           24
    */