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