急急急……。这个语句如何写。

liqijian 2013-06-15 11:04:36
SQL2000,数据表:TEST
日期 名称 数额
2013-01-01/AA/100
2013-02-01/AA/100
2013-06-30/AA/100
2012-02-05/BB/50
2013-05-05/BB/10

假设我要查询的时间条件为:2013年2季度
请问要想得到以下的查询结果,SELECT语句该如何写?
名称/本季度数额/本年度数额/累计数额
AA/100/300/300
BB/10/10/60
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
my_money 2013-06-16
  • 打赏
  • 举报
回复
select * from TEST where 日期 > '2013-02-01'
liqijian 2013-06-16
  • 打赏
  • 举报
回复
楼上的做法是实现不了的。这涉及到分类汇总。但语句具体如何写不清楚。注意的是表中的记录是5行,经查询后显示汇总成两行了。
代码兔 2013-06-16
  • 打赏
  • 举报
回复

select 名称,
sum(case when 日期 BETWEEN '2013-04-01' and  '2013-06-30' then 数额 else 0 end) as 本季度数额, 
sum(case when year(日期)=2013 then 数额 else 0 end) as 本年度数额, 
sum(数额) as 累计数额
from test
group by 名称
---涛声依旧--- 2013-06-16
  • 打赏
  • 举报
回复
select T.名称 ,(SELECT SUM([数额]) 本季度数额 FROM Test WHERE CONVERT(VARCHAR(10),[日期],120)>='2013-04-01' AND CONVERT(VARCHAR(10),[日期],120)<='2013-06-30' --2013年2季度 and [名称]=T.名称 GROUP BY [名称]) AS 本季度数额 ,(SELECT SUM([数额]) 本年度数额 FROM Test WHERE YEAR([日期])='2013'--本年度 and [名称]=T.名称 GROUP BY [名称]) AS 本季度数额 ,(SELECT SUM([数额]) 累计数额 FROM Test --累计数额 WHERE [名称]=T.名称 GROUP BY [名称]) AS 累计数额 FROM test T GROUP BY t.名称
---涛声依旧--- 2013-06-16
  • 打赏
  • 举报
回复
--建立测试环境 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Test]') AND type in (N'U')) DROP TABLE [dbo].[Test] GO CREATE TABLE [dbo].[Test]( [日期] [smalldatetime] NULL, [名称] [varchar](50) NULL, [数额] [decimal](18, 0) NULL ) ON [PRIMARY] GO INSERT INTO dbo.Test SELECT '2013-01-01','AA',100 UNION ALL SELECT '2013-02-01','AA',100 UNION ALL SELECT '2013-06-30','AA',100 UNION ALL SELECT '2012-02-05','BB',50 UNION ALL SELECT '2013-05-05','BB',10 --查询 SELECT x.[名称],x.本季度数额,y.本年度数额,z.累计数额 FROM (SELECT [名称],SUM([数额]) 本季度数额 FROM Test WHERE CONVERT(VARCHAR(10),[日期],120)>='2013-04-01' AND CONVERT(VARCHAR(10),[日期],120)<='2013-06-30' --2013年2季度 GROUP BY [名称]) x INNER JOIN (SELECT [名称],SUM([数额]) 本年度数额 FROM Test WHERE YEAR([日期])='2013'--本年度 GROUP BY [名称]) y ON x.[名称]=y.[名称] INNER JOIN (SELECT [名称],SUM([数额]) 累计数额 FROM Test --累计数额 GROUP BY [名称]) z ON x.[名称]=z.[名称] --结果 /* 名称 本季度数额 本年度数额 累计数额 AA 100 300 300 BB 10 10 60 */

34,590

社区成员

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

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