分不多了 ….
问题如下
A表
cpr_ID 总价
1 200
b表
ID cpr_ID 已收款 未收款 次数 时间
1 1(A表的id) 100 100 第一次收费 9-23
2 1 (A表的id) 100 100 第二次次收费 9-27
现在这是一个表里的两条数据, 大致意思 就跟现在买东西 分期相似,
本人现在需要查询A表里的总价 并且 害的查询出 已收款 和未收款 ,sql能查出来,不过 查出来的是两条数据
本人现在需要 合成一条数据 相似如下
cpr_ID 总价 已收款 未收款 次数
1 200 200 0 第一次收费100:9-23,第二次收费100:9-27
本人试了好多方法,均不是本人想要的,还请各位指点一下 谢谢。
问题如下
A表
cpr_ID 总价
1 200
b表
ID cpr_ID 已收款 未收款 次数 时间
1 1(A表的id) 100 100 第一次收费 9-23
2 1 (A表的id) 100 100 第二次次收费 9-27
现在这是一个表里的两条数据, 大致意思 就跟现在买东西 分期相似,
本人现在需要查询A表里的总价 并且 害的查询出 已收款 和未收款 ,sql能查出来,不过 查出来的是两条数据
本人现在需要 合成一条数据 相似如下
cpr_ID 总价 已收款 未收款 次数
1 200 200 0 第一次收费100:9-23,第二次收费100:9-27
本人试了好多方法,均不是本人想要的,还请各位指点一下 谢谢。
解决方案
50
大致这样,你试试。
with a as ( select tab1.cpr_ID,tab1.总价,tab2.已收款,tab2.未收款,tab2.次数,tab2.时间 from A表 tab1 join B表 tab2 on u.id=m.uid ) select a.cpr_ID,总价,sum(已收款) "已收款",sum(未收款)"未收款",(select 次数+"," from a STab1 where STab1.cpr_ID=a.cpr_ID for XML path(""))"次数" from a group by userid,总价
50
create table A (id int,n int) insert into A values(1,200) create table B (id int,a_id int,nin int,nout int,title nvarchar(50),ttime smalldatetime) insert into B values(1,1,100,100,"第一次收款","2015-05-05") insert into B values(2,1,100,100,"第二次收款","2016-09-09") select ID,n as 总价,(select isnull(sum(nin),0) from B where a_id=A.id) as 已收,stuff((select ","+B.title+convert(char(10),b.ttime,120) from B where a_id=A.id for xml path("")),1,1,"") as 次数 from A drop table A,B
未收的列,通过总数-已收