请问这样的表结构记录如何按需提取

shaguakading 2011-09-19 09:41:51
下面是表中字段及记录示例
-----------------------------
riqi | yu | zhang | wang
-----------------------------
2010-9-1 | 0 | 1 | 1
-----------------------------
2010-9-2 | 1 | -1 | 0
-----------------------------
2010-9-3 | 1 | 1 | 0
-----------------------------
2010-9-4 | 0 | -1 | 1
-----------------------------
我想把记录按如下需求展示,语句该怎么写(啥脚本语言都行)
----------------------------------
日期 |点数| yu | zhang | wang
----------------------------------
2010-9 | 0 | 2 | 0 | 2
----------------------------------
2010-9 | 1 | 2 | 2 | 2
----------------------------------
2010-9 | -1 | 0 | 2 | 0
----------------------------------
上面的意思是在某个月份内每人拥有X点数Y次
...全文
44 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-09-19
  • 打赏
  • 举报
回复
TRANSFORM sum(v)
select format(riqi,'yyyymm')
from (
select riqi,'yu' as k,yu as v from 表
union all
select riqi,'zhang ' as k,zhang from 表
union all
select riqi,'wang' as k,wang from 表
)
group by format(riqi,'yyyymm')
PIVOT v
WWWWA 2011-09-19
  • 打赏
  • 举报
回复
SELEC FORMAT(RIQI,'YYYY-MM'),'0',
SUM(IIF(yu='0',1,0)) AS yu ,
SUM(IIF(zhang='0',1,0)) AS zhang ,
SUM(IIF(Wang='0',1,0)) AS Wang
FROM TT GROUP BY FORMAT(RIQI,'YYYY-MM')
UNION ALL
SELEC FORMAT(RIQI,'YYYY-MM'),'1',
SUM(IIF(yu='1',1,0)) AS yu ,
SUM(IIF(zhang='1',1,0)) AS zhang ,
SUM(IIF(Wang='1',1,0)) AS Wang
FROM TT GROUP BY FORMAT(RIQI,'YYYY-MM')

UNION ALL
SELEC FORMAT(RIQI,'YYYY-MM'),'-1',
SUM(IIF(yu='-1',1,0)) AS yu ,
SUM(IIF(zhang='-1',1,0)) AS zhang ,
SUM(IIF(Wang='-1',1,0)) AS Wang
FROM TT GROUP BY FORMAT(RIQI,'YYYY-MM')

shaguakading 2011-09-19
  • 打赏
  • 举报
回复
哦,这个显示的意思是在2010年9月份,
yu得了2次0,zhang得了0次0,wang得了2次0
yu得了2次1,zhang得了2次1,wang得了2次1
yu得了0次-1,zhang得了2次-1,wang得了0次-1
wwwwb 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shaguakading 的回复:]
呵呵,我就是想知道应该怎样得出这样的结果啊。
这是朋友设计的表结构,然后要得出那样的结果,我用了group by、数组等都不行,用循环查询计算倒是可行,但是他那个表中有20多个姓氏字段(不知道怎么想的这么设计结构),运算速度太慢,效率极低,实在没招了,特来此求高招。
[/Quote]
----------------------------------
日期 |点数| yu | zhang | wang
----------------------------------
2010-9 | 0 | 2 | 0 | 2

这个结果是怎样得出的?不是要SQL语句
shaguakading 2011-09-19
  • 打赏
  • 举报
回复
呵呵,我就是想知道应该怎样得出这样的结果啊。
这是朋友设计的表结构,然后要得出那样的结果,我用了group by、数组等都不行,用循环查询计算倒是可行,但是他那个表中有20多个姓氏字段(不知道怎么想的这么设计结构),运算速度太慢,效率极低,实在没招了,特来此求高招。
WWWWA 2011-09-19
  • 打赏
  • 举报
回复
简要说明结果是怎样得出的
shaguakading 2011-09-19
  • 打赏
  • 举报
回复
5楼的语句虽然不能运行,但有参考价值,所以给分。
6楼的语句显示结果虽不理想,但参考价值很大。
谢谢5楼、6楼的两位老师

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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