设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 965|回复: 9
打印 上一主题 下一主题

[报表] 报表:请教

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2002-6-26 03:32:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在SQL SERVER上有一交易表如下:

交易表
交易编号,交易类型,交易日期,交易描述,交易金额

其中:交易编号为主键。

求交易统计报表,结构如下:

     XXXX年XX月交易统计报表
┌────┬────┬────┐
│交易类型│交易起数│交易金额│
├────┼────┼────┤
├────┼────┼────┤
├────┼────┼────┤
├────┼────┼────┤
..............................
├────┼────┼────┤
│合  计│    │    │
├────┼────┼────┤
│本年累计│    │    │
└────┴────┴────┘
[em26]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2002-6-26 21:18:00 | 只看该作者

更正部分

select 交易類型,count(交易編號) as 交易起數,sum(交易金額) as  交易金額
   from 交易表 ,  
     group by 交易類型 ,datepart(month,交易日期)
/*注解:此為按鬮易類型,和交易日期的月份分組

        having datepart(yare,交易日期)= datepart(yare,getdate())
這樣可不可以呀!
先按交易類型來分組統計和匯總,然后用datepart()來計算和過瀘出本年的統計
接著把報表的數據源設計為以上SQL語句,再報表上再用sum()來累加



[此贴子已经被HG于2002-6-26 12:08:20编辑过]




[此贴子已经被HG于2002-6-26 13:18:04编辑过]

点击这里给我发消息

3#
 楼主| 发表于 2002-6-26 19:15:00 | 只看该作者
不行,还有本月合计,标题是月报表
4#
发表于 2002-6-26 20:03:00 | 只看该作者
老朱可不可以這樣
改語句  having datepart(yare,交易日期)= datepart(yare,getdate())
為 having ((datepart(yare,交易日期)=datepart(yare,getdate())) and (datepart(month,交易日期) = datepart(month,getdate()))

点击这里给我发消息

5#
 楼主| 发表于 2002-6-26 20:06:00 | 只看该作者
还是自己来

SELECT 交易类型, COUNT(交易编号) AS 交易起数, SUM(交易金额) AS 交易金额
FROM 交易表
WHERE (DATEPART(year, 交易日期) = DATEPART(year, GETDATE())) AND
      (DATEPART(month, 交易日期) = DATEPART(month, GETDATE()))
GROUP BY 交易类型
UNION
SELECT '合计' AS 交易类型, COUNT(交易编号) AS 交易起数, SUM(交易金额) AS 交易金额
FROM 交易表
WHERE (DATEPART(year, 交易日期) = DATEPART(year, GETDATE())) AND
      (DATEPART(month, 交易日期) = DATEPART(month, GETDATE()))
UNION
SELECT '本年累计' AS 交易类型, COUNT(交易编号) AS 交易起数, SUM(交易金额) AS 交易金额
FROM 交易表
WHERE (DATEPART(year, 交易日期) = DATEPART(year, GETDATE()))
[em26]
6#
发表于 2002-6-26 20:10:00 | 只看该作者
老朱你這樣其寮是小題大作了,用不著用union語句的。
報表有此功能,不用白不用。

点击这里给我发消息

7#
 楼主| 发表于 2002-6-26 20:19:00 | 只看该作者
HG, 你好,

能用 SQL 解决要尽量用 SQL 来做,这样可避免客户端的编程复杂度。[em26]
8#
发表于 2002-6-26 21:17:00 | 只看该作者
明白您的意思,像您上述解決情況,可以改寫成存儲過程,傳遞一個月參數,
來動態產生月報表。是嗎?
英雄所見略同,哈哈...
9#
发表于 2002-7-13 23:36:00 | 只看该作者

老朱是不是比您的報表,功能更上一層樓。

聯合查詢在上例中的新高效用法:
alter  procedure usp_wage_month_total(@my_year as smallint,@my_month as smallint,@my_option as bit) as   
  if @my_option = 0  
       select * from uv_wage_month_total where  wage_date_year=@my_year and wage_date_month = @my_month  
       union            
       select * from uv_wage_month_total_history where wage_date_year= @my_year and wage_date_month = @my_month  

   else   

            select * from uv_wage_month_total where wage_date_year= @my_year and wage_date_month = @my_month  and wage_pay = @my_option  
            union            
            select * from uv_wage_month_total_history where  wage_date_year=@my_year and wage_date_month = @my_month  and wage_pay = @my_option  
---------------------------------------------------------------------------------
把上面存儲過程作為數據源,就可以體現C/S構架的一些強大功能了。


[此贴子已经被HG于2002-7-13 15:35:57编辑过]

点击这里给我发消息

10#
 楼主| 发表于 2002-7-14 01:02:00 | 只看该作者
很好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-21 18:43 , Processed in 0.088010 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表