请教一SQL语句

lishizhen2002 2008-03-07 11:28:28
数据如下:

客户    类型   金额 日期

公司1   应收 1000 2008-1-1
公司1   实收 500 2008-1-1
公司1   应收 1000 2008-1-1
公司1   应收 1000 2008-1-1
公司2   应收 1000 2008-1-1
公司2   实收 1000 2008-1-1
公司2   应收 1000 2008-1-1


要求是得到当月欠款公司

公司1   1500
公司2 1000

这个SQL麻写?谢谢


...全文
79 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
CoffeeShop 2008-03-07
这个问题我昨天才问了的 我已经解决了 不管你有多少列都可以搞定 看看我昨天发的贴子吧。
回复
wzy_love_sly 2008-03-07
create table tb(客户 varchar(10), 类型 varchar(10),金额 int,日期 datetime)
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司1', '实收', 500 , '2008-1-1')
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司2', '应收', 1000, '2008-1-1')
insert into tb values('公司2', '实收', 1000, '2008-1-1')
insert into tb values('公司2', '应收', 1000, '2008-1-1')

select 客户,sum(case when 类型='应收' then 金额 end)-sum(case when 类型='实收' then 金额 end)
from tb
group by 客户


客户 (无列名)
公司1 2500
公司2 1000
回复
pt1314917 2008-03-07
哦。还加个月份```
回复
pt1314917 2008-03-07

-------楼主把结果贴错了吧 ?

create table tb(客户 varchar(10), 类型 varchar(10),金额 int,日期 datetime)
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司1', '实收', 500 , '2008-1-1')
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司2', '应收', 1000, '2008-1-1')
insert into tb values('公司2', '实收', 1000, '2008-1-1')
insert into tb values('公司2', '应收', 1000, '2008-1-1')
go



select 客户,应收,实收,欠款=应收-实收 from
(select 客户,
应收=sum(case 类型 when '应收' then 金额 else 0 end),
实收=sum(case 类型 when '实收' then 金额 else 0 end)
from tb group by 客户)a
where 应收>实收

回复
dawugui 2008-03-07
create table tb(客户 varchar(10), 类型 varchar(10),金额 int,日期 datetime)
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司1', '实收', 500 , '2008-1-1')
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司2', '应收', 1000, '2008-1-1')
insert into tb values('公司2', '实收', 1000, '2008-1-1')
insert into tb values('公司2', '应收', 1000, '2008-1-1')
go

select * , 欠收 = 应收 - 实收 from
(
select 客户 , 月份 = convert(varchar(7),日期,120),
sum(case 类型 when '应收' then 金额 else 0 end) 应收,
sum(case 类型 when '实收' then 金额 else 0 end) 实收
from tb
group by 客户 , convert(varchar(7),日期,120)
) t
where 应收 > 实收



drop table tb

/*
客户 月份 应收 实收 欠收
---------- ------- ----------- ----------- -----------
公司1 2008-01 3000 500 2500
公司2 2008-01 2000 1000 1000

(所影响的行数为 2 行)
*/
回复
dawugui 2008-03-07
create table tb(客户 varchar(10), 类型 varchar(10),金额 int,日期 datetime)
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司1', '实收', 500 , '2008-1-1')
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司1', '应收', 1000, '2008-1-1')
insert into tb values('公司2', '应收', 1000, '2008-1-1')
insert into tb values('公司2', '实收', 1000, '2008-1-1')
insert into tb values('公司2', '应收', 1000, '2008-1-1')
go

select * from
(
select 客户 , 月份 = convert(varchar(7),日期,120),
sum(case 类型 when '应收' then 金额 else 0 end) 应收,
sum(case 类型 when '实收' then 金额 else 0 end) 实收
from tb
group by 客户 , convert(varchar(7),日期,120)
) t
where 应收 > 实收

drop table tb

/*
客户 月份 应收 实收
---------- ------- ----------- -----------
公司1 2008-01 3000 500
公司2 2008-01 2000 1000

(所影响的行数为 2 行)
*/
回复
dawugui 2008-03-07
数据如下:
客户    类型   金额 日期
公司1   应收 1000 2008-1-1
公司1   实收 500 2008-1-1
公司1   应收 1000 2008-1-1
公司1   应收 1000 2008-1-1
公司2   应收 1000 2008-1-1
公司2   实收 1000 2008-1-1
公司2   应收 1000 2008-1-1
要求是得到当月欠款公司
公司1   1500
公司2 1000

这个SQL麻写?谢谢

select * from
(
select 客户 , 月份 = convert(varchar(7),日期,120),
sum(case 类型 when '应收' then 金额 else 0 end) 应收,
sum(case 类型 when '实收' then 金额 else 0 end) 实收
from tb
group by 客户 , convert(varchar(7),日期,120)
) t
where 应收 > 实收
回复
lishizhen2002 2008-03-07
要求是得到当月欠款公司

客户 应收 实收 欠费
公司1  3000 1500 1500
公司2 2000 1000 1000

回复
ojuju10 2008-03-07


select 客户,应收=sum(case when 类型='应收' then 金额 else 0 end),
实收=sum(case when 类型='实收' then 金额 else 0 end),
欠款=sum(case when 类型='应收' then 金额 else -1*金额 end) from tab
group by 客户
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-07 11:28
社区公告
暂无公告