一个统计报表的SQL语句

select t.lngShopID,

case when t.lngShopID = 6666666666 --and t.lngDateID = 7777777777
          then '总计'
     else s.strShopName
     end as strShopName,

case when t.lngShopID = 6666666666 --and t.lngDateID = 7777777777
 then ''
     when t.lngShopID < 6666666666 and t.lngChannelID = 8888888888
 then '合计'
     else convert(varchar(10), d.dtDateTime, 121) end as strDate,

t.lngChannelID,

case when t.lngShopID < 6666666666 and t.lngChannelID = 8888888888
          then ''
     when t.lngArticleID = 9999999999
          then '小计'
     else c.strChannelName
     end as strChannelName,

a.strTitle,
t.lngArticleID,
t.lngIPcounts
from (SELECT Case When GROUPING(a.lngShopID) = 1 Then 6666666666 Else lngShopID End As lngShopID,
  Case When Grouping(b.lngDateID) = 1 Then 7777777777 Else b.lngDateID End As lngDateID,
  Case When Grouping(a.lngChannelID) = 1 Then 8888888888 Else lngChannelID End As lngChannelID, 
  Case When Grouping(a.lngArticleID) = 1 Then 9999999999 Else a.lngArticleID End As lngArticleID,   
  Sum(a.lngIPcounts) As lngIPcounts
 From IISLogCount a
  Inner Join dimDate b On Convert(varchar(10),b.dtDateTime,121) = Convert(varchar(10),a.dtmCountTime,121)
   Group By a.lngShopID,b.lngDateID,a.lngChannelID,a.lngArticleID With RollUp
) as t

 left join dimshop s on t.lngshopID = s.lngShopID
 left join dimChannel c on t.lngChannelID = c.lngChannelID
 left join dimDate d on t.lngDateID = d.lngDateID
 left join BNManage.dbo.article a on t.lngArticleID = a.lngArticleID

  where not (t.lngShopID <> 6666666666 and t.lngDateID = 7777777777 and t.lngChannelID = 8888888888)
 {?strWhere}{?strWhere}
   Order By t.lngShopID,t.lngDateID,t.lngChannelID, t.lngArticleID 

传入报表的参数为:strWhere,本语句的关键就是蓝色的两个关键字的运用.

运行后生成如下类似效果:

大类

日期

小类

活动

点击率

大类

2006-9-28

类别1

A

2

0

5

B

3

小计

 

10

类别2

A

1

B

2

C

3

D

4

小计

 

10

合计

 

 

20

2006-9-29

类别3

A

2

0

5

B

3

小计

 

10

类别4

A

1

B

2

C

3

D

4

小计

 

10

合计

 

 

20

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 禅道统计工时的SQL语句主要涉及以下几个方面: 1. 统计个人工时: SELECT user_name, SUM(develop_hours) AS total_hours FROM worklog WHERE create_date BETWEEN '起始日期' AND '截止日期' GROUP BY user_name; 上述SQL语句将根据起始日期和截止日期统计工作记录表中每个用户的开发工时总和,并按用户名进行分组。 2. 统计项目工时: SELECT project_name, SUM(develop_hours) AS total_hours FROM worklog WHERE create_date BETWEEN '起始日期' AND '截止日期' GROUP BY project_name; 以上SQL语句将根据起始日期和截止日期统计工作记录表中每个项目的开发工时总和,并按项目名称进行分组。 3. 统计任务工时: SELECT task_name, SUM(develop_hours) AS total_hours FROM worklog WHERE create_date BETWEEN '起始日期' AND '截止日期' GROUP BY task_name; 上述SQL语句将根据起始日期和截止日期统计工作记录表中每个任务的开发工时总和,并按任务名称进行分组。 禅道中可以通过内置的导出功能将统计结果导出为Excel文件。导出后,可以使用Excel工具对工时报表进行进一步的处理和分析,例如计算平均工时、最长工时、最短工时等。还可以使用Excel的图表功能绘制工时统计图,更直观地展示工时分布情况。 综上所述,禅道统计工时可以通过SQL语句进行查询并导出为Excel报表,借助Excel工具可以进行更加高级的数据处理和可视化分析。 ### 回答2: 禅道统计工时可以通过以下SQL语句来实现: ``` SELECT u.user_name AS 用户名, SUM(o.hours) AS 工时总数 FROM zt_user AS u LEFT JOIN zt_task AS t ON u.id = t.finished_by LEFT JOIN zt_work AS w ON t.id = w.task LEFT JOIN zt_owned AS o ON t.id = o.task GROUP BY u.user_name ``` 以上SQL语句中,通过多个表的连接操作,结合SUM函数和GROUP BY语句,可以获得每个用户的工时总数。 而要将工时数据导出到excel工具中生成工时报表,则可以按照以下步骤进行操作: 1. 在查询结果页面中,选择"导出"选项。 2. 选择导出格式为Excel,并点击确认。 3. 下载并保存导出的Excel文件。 4. 打开Excel工具,打开保存的Excel文件。 5. 对数据进行格式化和排版,创建合适的表格和图表,以展示工时统计结果。 6. 根据需求,可以对工时报表进行进一步编辑和美化,添加标题、图例等。 7. 最后,保存并分享工时报表。 通过以上操作,可以将禅道统计的工时数据导出到Excel工具中生成工时报表,并根据需要进行进一步编辑和美化,以便更好地展示工时统计结果。 ### 回答3: 禅道是一款项目管理软件,可以用于统计工时。要使用SQL语句统计工时,需要先了解禅道数据库的结构和关系,并根据需求来编写相应的查询语句。 以下是一个示例的SQL语句,用于统计指定时间范围内的工时信息: ``` SELECT user_realname, SUM(work_hours) AS total_hours FROM zt_taskestimate WHERE date BETWEEN '2022-01-01' AND '2022-01-31' GROUP BY user_realname; ``` 这个SQL语句查询了`zt_taskestimate`表中指定时间范围内的工时信息,并按用户名称进行了分组,最后计算了每个用户的总工时。 另外,如果你需要将工时报表导出为Excel文件,可以使用Excel工具来完成导出操作。以下是一个示例的Python代码,使用`pandas`库将查询结果导出为Excel文件: ```python import pandas as pd # 假设查询结果保存在名为result的DataFrame中 result = pd.DataFrame({ '名称': ['张三', '李四', '王五'], '总工时': [30, 25, 35] }) # 导出为Excel文件 result.to_excel('工时报表.xlsx', index=False) ``` 以上代码使用了`pandas`库来操作DataFrame对象,并使用`to_excel`方法将数据导出为Excel文件。你可以根据实际情况进行相应的修改和调整。 希望以上回答对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值