比如一条数据包括的列 “属性” 和 “内容” 字段。
假设数据库内容是: ID 属性 内容
1 AA 100
2 AA 50
3 BB 60
4 BB 20求 “属性” = AA 字段的“内容”总和;“属性” = BB 字段“内容”的总和;然后为AA的和 - 为BB的和。
假设数据库内容是: ID 属性 内容
1 AA 100
2 AA 50
3 BB 60
4 BB 20求 “属性” = AA 字段的“内容”总和;“属性” = BB 字段“内容”的总和;然后为AA的和 - 为BB的和。
from (
select sum(内容) [sum]
from 表
where 属性='aa'
union
select -1*sum(内容) [sum]
from 表
where 属性='bb'
) a
select (select sum(内容) from table where 属性='AA')-(select sum(内容) from table where 属性='BB')
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([ID] int,[属性] varchar(2),[内容] int)
insert [tb]
select 1,'AA',100 union all
select 2,'AA',50 union all
select 3,'BB',60 union all
select 4,'BB',20
go-->查询
SELECT
SUM(CASE WHEN 属性='AA' THEN 内容 ELSE 0 END) AS [AA和],
SUM(CASE WHEN 属性='BB' THEN 内容 ELSE 0 END) AS [BB和],
SUM(CASE WHEN 属性='AA' THEN 内容 WHEN 属性='BB' THEN -内容 ELSE 0 END) AS [AA和-BB和]
FROM
TB-->查询结果
/**
AA和 BB和 AA和-BB和
----------- ----------- -----------
150 80 70(1 行受影响)
**/
SELECT
SUM(CASE WHEN 属性='AA' THEN 内容 ELSE 0 END) AS [AA和],
SUM(CASE WHEN 属性='BB' THEN 内容 ELSE 0 END) AS [BB和],
SUM(CASE WHEN 属性='AA' THEN 内容 WHEN 属性='BB' THEN -1*内容 ELSE 0 END) AS [AA和-BB和]
FROM
TB顶树哥!!
SELECT
SUM(CASE WHEN 属性='AA' THEN 内容 ELSE 0 END) AS [AA和],
SUM(CASE WHEN 属性='BB' THEN 内容 ELSE 0 END) AS [BB和],
SUM(CASE WHEN 属性='AA' THEN 内容 WHEN 属性='BB' THEN -1*内容 ELSE 0 END) AS [AA和-BB和]
FROM
TB