create table 表(客户名称 varchar(1) ,欠款日期 datetime ,欠款金额 int)
insert into 表 select
'a', '2006-1-1', 50 union select
'a', '2006-2-4', 40 union select
'b', '2006-3-27', 30 union select
'b', '2006-4-8', 40select 客户名称,(case when datepart(dd,欠款日期)>25 then datepart(mm,欠款日期)+1 else datepart(mm,欠款日期) end ) as 月份,sum(欠款金额) as 欠款合计
from 表
group by 客户名称, (case when datepart(dd,欠款日期)>25 then datepart(mm,欠款日期)+1 else datepart(mm,欠款日期) end )
客户名称 月份 欠款合计
---- ----------- -----------
a 1 50
a 2 40
b 4 70(所影响的行数为 3 行)
解决方案 »
- SQL的游标 提示 在将 varchar 成数据类型 smallint 时失败
- 求助一个单表查询的问题..
- 大难题:根据给出的变化趋势条件来进行查询
- 这个查询该怎么写
- 各位,这句哪错了:update fm5 set fm5.dwmc = (select fm4.dwmc from fm4 where (fm4.dwdm=fm5.dwdm and fm4.dwmc<>fm5.dwmc) )from fm
- 请SQL 执行窗口下方一般有两个TAB,一个是results,一个是messages
- 小问题,麻烦大家了
- '?'附近语法错误!!!!!!!!!!!!(在线等)。
- 怎么实现根据表条件查询数据库名?
- 数据序列号添加问题。。。
- 超奇怪问题,待解决!
- sql 安装时出现”无法找到动态链接库SQLUNIRL.dll于指定的路径“c:\winnt\siystem 32 在线等!!谢谢!
select 客户名称,(case when datepart(dd,欠款日期)>25 then convert(varchar,year(dateadd(mm,1,欠款日期)))+'-'+convert(varchar,month(dateadd(mm,1,欠款日期)))
else convert(varchar,year(欠款日期))+'-'+convert(varchar,month(欠款日期)) end ) as 周期,sum(欠款金额) 欠款金额 from 表
group by 客户名称,(case when datepart(dd,欠款日期)>25 then convert(varchar,year(dateadd(mm,1,欠款日期)))+'-'+convert(varchar,month(dateadd(mm,1,欠款日期)))
else convert(varchar,year(欠款日期))+'-'+convert(varchar,month(欠款日期)) end )
order by 客户名称,周期
表:客户名称,欠款日期,欠款金额
a 2006-1-1 50
a 2006-2-4 40
b 2006-3-27 30
b 2006-4-8 40
如果要的结束:客户名称,1,2, 3,4,欠款合计
a 50 40
b 70
又要怎么搞
我想汇总每个月每个财务周期每个客户的欠款汇总(财务周期为上月的26号到本月的25结束)
表:客户名称,欠款日期,欠款金额
a 2006-1-1 50
a 2006-2-4 40
b 2006-3-27 30
b 2006-4-8 40
如果要的结束:客户名称,1,2, 3,4
a 50 40
b 70
又要怎么搞
insert into 表 select
'a', '2006-1-1', 50 union select
'a', '2006-2-4', 40 union select
'b', '2006-3-27', 30 union select
'b', '2006-4-8', 40
gocreate function dbo.f_str(@str1 varchar(100))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @re varchar(8000)
SET @re=''
SELECT @re=@re+' '+isnull(convert(varchar,欠款金额),'')
FROM aa_temp
WHERE 客户名称 =@str1
RETURN(STUFF(@re,1,1,''))
ENDgoselect 客户名称,(case when datepart(dd,欠款日期)>25 then convert(varchar,year(dateadd(mm,1,欠款日期)))+'-'+convert(varchar,month(dateadd(mm,1,欠款日期)))
else convert(varchar,year(欠款日期))+'-'+convert(varchar,month(欠款日期)) end ) as 周期,sum(欠款金额) 欠款金额 into aa_temp from 表
group by 客户名称,(case when datepart(dd,欠款日期)>25 then convert(varchar,year(dateadd(mm,1,欠款日期)))+'-'+convert(varchar,month(dateadd(mm,1,欠款日期)))
else convert(varchar,year(欠款日期))+'-'+convert(varchar,month(欠款日期)) end )
goselect 客户名称,dbo.f_str(客户名称) from aa_temp
group by 客户名称drop table aa_temp
drop function dbo.f_str
drop table 表