请教一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麻写?谢谢


...全文
131 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 客户

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧