Foxtable(狐表)用户栏目专家坐堂 → 类似于截图这样的统计怎么做?


  共有4620人关注过本帖树形打印复制链接

主题:类似于截图这样的统计怎么做?

帅哥哟,离线,有人找我吗?
逛逛
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12117 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2013/8/19 17:47:00 [只看该作者]

通过建立中间查询方式,不知是否可以。我用MSSQL

如能用存储过程,效果会更好

 

前提,你查询能得到下表

 

 

   
统计项目 项目        年份    月份     人数     金额
东阳山 一分厂 2013 1 5 200
峰山 一分厂 2013 1 5 500

查询1

CREATE VIEW dbo.VIEW2
AS
SELECT  统计项目, 项目, '金额(元)' AS 统计类别, 2  as  大序号  ,2 as 小序号,
      CASE 月份 WHEN 1 THEN 金额 ELSE 0 END AS [1月],
      CASE 月份 WHEN 2 THEN 金额 ELSE 0 END AS [2月],
      CASE 月份 WHEN 3 THEN 金额 ELSE 0 END AS [3月],
      CASE 月份 WHEN 4 THEN 金额 ELSE 0 END AS [4月],
      CASE 月份 WHEN 5 THEN 金额 ELSE 0 END AS [5月],
      CASE 月份 WHEN 6 THEN 金额 ELSE 0 END AS [6月],
      CASE 月份 WHEN 7 THEN 金额 ELSE 0 END AS [7月],
      CASE 月份 WHEN 8 THEN 金额 ELSE 0 END AS [8月],
      CASE 月份 WHEN 9 THEN 金额 ELSE 0 END AS [9月],
      CASE 月份 WHEN 10 THEN 金额 ELSE 0 END AS [10月],
      CASE 月份 WHEN 11 THEN 金额 ELSE 0 END AS [11月],
      CASE 月份 WHEN 12 THEN 金额 ELSE 0 END AS [12月]
FROM dbo.Table1
WHERE (年份 = 2013)

union
SELECT  统计项目, 项目, '人数' AS 统计类别, 2,1,
      CASE 月份 WHEN 1 THEN 人数 ELSE 0 END AS [1月],
      CASE 月份 WHEN 2 THEN 人数 ELSE 0 END AS [2月],
      CASE 月份 WHEN 3 THEN 人数 ELSE 0 END AS [3月],
      CASE 月份 WHEN 4 THEN 人数 ELSE 0 END AS [4月],
      CASE 月份 WHEN 5 THEN 人数 ELSE 0 END AS [5月],
      CASE 月份 WHEN 6 THEN 人数 ELSE 0 END AS [6月],
      CASE 月份 WHEN 7 THEN 人数 ELSE 0 END AS [7月],
      CASE 月份 WHEN 8 THEN 人数 ELSE 0 END AS [8月],
      CASE 月份 WHEN 9 THEN 人数 ELSE 0 END AS [9月],
      CASE 月份 WHEN 10 THEN 人数 ELSE 0 END AS [10月],
      CASE 月份 WHEN 11 THEN 人数 ELSE 0 END AS [11月],
      CASE 月份 WHEN 12 THEN 人数 ELSE 0 END AS [12月]
FROM dbo.Table1
WHERE (年份 = 2013)
union
SELECT '合计', 项目,'人数' AS 统计类别,  2,1,
 SUM(CASE 月份 WHEN 1 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 2 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 3 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 4 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 5 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 6 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 7 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 8 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 9 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 10 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 11 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 12 THEN 人数 ELSE 0 END)
FROM dbo.Table1
WHERE (年份 = 2013)
GROUP BY  项目

union
SELECT '合计', 项目,'金额(元)'  ,  2,2,
 SUM(CASE 月份 WHEN 1 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 2 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 3 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 4 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 5 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 6 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 7 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 8 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 9 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 10 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 11 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 12 THEN 金额 ELSE 0 END)
FROM dbo.Table1
WHERE (年份 = 2013)
GROUP BY  项目
union
SELECT '合计', '总计','人数' ,  5,1,
 SUM(CASE 月份 WHEN 1 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 2 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 3 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 4 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 5 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 6 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 7 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 8 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 9 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 10 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 11 THEN 人数 ELSE 0 END),
 SUM(CASE 月份 WHEN 12 THEN 人数 ELSE 0 END)
FROM dbo.Table1
WHERE (年份 = 2013)


union
SELECT '合计', '总计','金额(元)'  ,  5,2,
 SUM(CASE 月份 WHEN 1 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 2 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 3 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 4 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 5 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 6 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 7 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 8 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 9 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 10 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 11 THEN 金额 ELSE 0 END),
 SUM(CASE 月份 WHEN 12 THEN 金额 ELSE 0 END)
FROM dbo.Table1
WHERE (年份 = 2013)

 

 

查询2

CREATE VIEW dbo.VIEW3
AS
SELECT TOP 100 PERCENT 统计项目 AS Expr1, 项目 AS Expr2, 统计类别 AS Expr3,
      MAX([1月]) AS Expr4, MAX([2月]) AS Expr5, MAX([3月]) AS Expr6, MAX([4月]) AS Expr7,
      MAX([5月]) AS Expr8, MIN([6月]) AS Expr9, MAX([7月]) AS Expr10, MAX([8月])
      AS Expr11, MAX([9月]) AS Expr12, MAX([10月]) AS Expr13, MAX([11月]) AS Expr14,
      MAX([12月]) AS Expr15, MAX(大序号) AS Expr16, MAX(小序号) AS Expr17
FROM dbo.VIEW2
GROUP BY 统计项目, 统计类别, 项目
ORDER BY MAX(大序号), 项目 DESC, 统计项目, MAX(小序号)

 

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/8/19 20:11:00 [只看该作者]

在本表统计得不偿失啊。参考下面的代码

With Tables("表A")
    .MergeMode = MergeModeEnum.Standard '标准合并模式
    .MergeCols.Clear() '清除原来的合并列
    .MergeCols.Add("项目") '加入要合并的列
    .MergeCols.Add("统计项目")
    .AllowMerge = True '启用合并模式
End With

Dim t As Table = Tables("表A")
Dim ls_xiangmu As List(Of String) = t.DataTable.GetUniqueValues("项目 is not null", "项目")
Dim dic_idx As New Dictionary(Of Integer, String)
Dim ls_idx As New List(Of Integer)
For Each xiangmu As String In ls_xiangmu
    Dim idx As Integer = t.FindRow("项目 = '" & xiangmu & "'", 0, False)
    If idx > -1 Then
        ls_idx.Add(idx)
        dic_idx.Add(idx, xiangmu)
    End If
Next

ls_idx.Sort()

Dim nr As Row = t.AddNew
nr("项目") = "总合计"
nr("统计项目") = "合计"
ls_idx.Add(t.Rows.Count)
For i As Integer = ls_idx.Count - 2 To 0 Step -1
    Dim xm As String = dic_idx(ls_idx(i))
    t.Position = ls_idx(i+1)
    Dim r As Row = t.InsertNew
    r("项目") = xm
    r("统计项目") = "合计"
Next


 回到顶部
帅哥哟,离线,有人找我吗?
菲舍尔
  23楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:504 积分:3492 威望:0 精华:3 注册:2012/11/13 15:49:00
  发帖心情 Post By:2013/8/20 2:08:00 [只看该作者]

老朱,首先你的数据结构要改变一下,要用通用的角度来设计表结构

 

这种统计,在狐表中应该是没有提供的,但通过交叉统计和数据结构变换,应该可以达到目的的

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:汇总.table

 

我只做了交叉统计的部分,数据结构变换,应该也不复杂

[此贴子已经被作者于2013-8-20 2:18:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  24楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/8/20 7:48:00 [只看该作者]

老大  他要的就是这个结构,几百个项目用同一个结构. 所以我做一个表,实在不行,我用另表在底部处理. 只需要直接输入加个统计而已.
[此贴子已经被作者于2013-8-20 7:50:30编辑过]

 回到顶部
总数 24 上一页 1 2 3