原表如下:
品名-----币种----金额
A-------RMB -----100
A-------USD------200
A-------USD------300
B-------RMB------400
B-------USD------50
B-------RMB------30
想得到如下结果:
品名----币种-----金额---------备注
A-------RMB -----100-------A下含有美金:500元
A-------USD------200-------A下含有美金:500元
A-------USD------300-------A下含有美金:500元
B-------RMB------400------ B下含有美金:50元
B-------USD------50------- B下含有美金:50元
B-------RMB------30------- B下含有美金:50元
就是查询结果多个备注,相同品名下的美金合计然后放到备注字段里表达出来
品名-----币种----金额
A-------RMB -----100
A-------USD------200
A-------USD------300
B-------RMB------400
B-------USD------50
B-------RMB------30
想得到如下结果:
品名----币种-----金额---------备注
A-------RMB -----100-------A下含有美金:500元
A-------USD------200-------A下含有美金:500元
A-------USD------300-------A下含有美金:500元
B-------RMB------400------ B下含有美金:50元
B-------USD------50------- B下含有美金:50元
B-------RMB------30------- B下含有美金:50元
就是查询结果多个备注,相同品名下的美金合计然后放到备注字段里表达出来
品名+'下含有美金:'+ltrim((select sum(金额) from tb where 品名=t.品名 and 币种='USD'))+'元' 备注from tb t
drop table tb
Go
Create table tb([品名] nvarchar(1),[币种] nvarchar(3),[金额] int)
Insert tb
select N'A',N'RMB',100 union all
select N'A',N'USD',200 union all
select N'A',N'USD',300 union all
select N'B',N'RMB',400 union all
select N'B',N'USD',50 union all
select N'B',N'RMB',30
Go
select t.*,
品名+'下含有美金:'+ltrim((select sum(金额) from tb where 品名=t.品名 and 币种='USD'))+'元' 备注
from tb t
/*
品名 币种 金额 备注
---- ---- ----------- ---------------------------
A RMB 100 A下含有美金:500元
A USD 200 A下含有美金:500元
A USD 300 A下含有美金:500元
B RMB 400 B下含有美金:50元
B USD 50 B下含有美金:50元
B RMB 30 B下含有美金:50元(6 row(s) affected)
*/
品名+'下含有美金:'+ltrim((select sum(金额) from (把临时表括起来)a where 品名=t.品名 and 币种='USD'))+'元' 备注
from (把临时表括起来) t如果直接是视图的话
select *,
品名+'下含有美金:'+ltrim((select sum(金额) from 视图名 where 品名=t.品名 and 币种='USD'))+'元' 备注
from 视图名 t
;with cte as
(
... --你的union语句
)select *,
品名+'下含有美金:'+ltrim((select sum(金额) from cte where 品名=t.品名 and 币种='USD'))+'元' 备注
from cte t
drop table tb
Go
Create table tb([品名] nvarchar(1),[币种] nvarchar(3),[金额] int)
Insert tb
select N'A',N'RMB',100 union all
select N'A',N'USD',200 union all
select N'A',N'USD',300 union all
select N'B',N'RMB',400 union all
select N'B',N'USD',50 union all
select N'B',N'RMB',30
Go
--想得到如下结果:
--品名----币种-----金额---------备注
--A-------RMB -----100-------A下含有美金:500元
--A-------USD------200-------A下含有美金:500元
--A-------USD------300-------A下含有美金:500元
--B-------RMB------400------ B下含有美金:50元
--B-------USD------50------- B下含有美金:50元
--B-------RMB------30------- B下含有美金:50元select *,品名,+'下含有美金:'+ltrim((select sum(金额) from tb where 币种='USD' and t.品名=品名))+'元' as 备注 from tb t
品名 币种 金额 品名 备注
---- ---- ----------- ---- --------------------------
A RMB 100 A 下含有美金:500元
A USD 200 A 下含有美金:500元
A USD 300 A 下含有美金:500元
B RMB 400 B 下含有美金:50元
B USD 50 B 下含有美金:50元
B RMB 30 B 下含有美金:50元(6 行受影响)
create view fwkpzb
as
select
hyck.idx,业务编号,提单号,关单号,开航日期,船名航次,ISNULL((SELECT dxzl.中文名 from dxzl where idx=hyck.客户_DXZL_中文名),'') as 客户,
'业务编号:'+Rtrim(业务编号)+CHAR(10)+'提单号:'+Rtrim(关单号)+CHAR(10)+'此发票共含美金:' as 发票备注,
ISNULL(fysr_sr.发票号,'') as 发票号,ISNULL(fysr_sr.币种,'') as 币种,ISNULL(fysr_sr.PC,'') as PC,
ISNULL((SELECT 中文名 FROM dxzl WHERE idx = fysr_sr.应收对象),'') AS 应收对象,str(fysr_sr.idx,10)+'fysr' as midx,
ISNULL((select 中文名 from fymx where idx=费用明细_fymx),'') as 费用明细,数量,round(fysr_sr.单价*fysr_sr.汇率,2)as 单价,round(数量*fysr_sr.单价*fysr_sr.汇率,2)as 总价,round(数量*fysr_sr.单价,2)as 原总价,
fysr_sr.汇率,fysr_sr.开票抬头,fysr_sr.备注
from hyck left join fysr_sr on hyck.idx=fysr_sr.hyck_idx
where fysr_sr.pc='PP'上面视图的第7行,此发票共含有美金: 我想写在这个后面。业务编号可以理解为品名,原总价就是每个品名下不同币种的价格。
价格和品名都在fysr_sr这个表里面,业务编号在hyck这个表里面。