Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

复杂查询语句的完成

时 间:2015-05-17 21:56:54
作 者:半夜罗   ID:36948  城市:成都
摘 要:怎样完成复杂sql语句
正 文:

“  TRANSFORM Sum(g.工资) AS 工资
Select g.年 AS 年, g.月 AS 月, g.日 AS 日, Sum(g.工资) AS 总计
FROM (Select e.年, e.月, e.日, e.姓名, Sum(e.工资) AS 工资 FROM (Select a.年, a.月, a.日, a.姓名, [b]![工资]*[a]![考勤] AS 工资 FROM 整形考勤表 AS a INNER JOIN (Select c.年, c.月, c.日, IIf([a]![考勤]=Null,Null,[c]![整形]/[a]![考勤]) AS 工资 FROM (Select 年, 月, 日, Sum(a.考勤) AS 考勤 FROM 整形考勤表 AS a GROUP BY 年, 月, 日)  AS a INNER JOIN 工段工资表 AS c ON (a.日 = c.日) AND (a.月 = c.月) AND (a.年 = c.年))  AS b ON (a.日 = b.日) AND (a.月 = b.月) AND (a.年 = b.年))  AS e GROUP BY e.年, e.月, e.日, e.姓名)  AS g
GROUP BY g.年, g.月, g.日
orDER BY g.年, g.月, g.日
PIVOT g.姓名;  ”


你看到这样的sql语句,能一下清楚是什么意思吗?你能一次性写出这样的语句吗?
如果改成这样的呢?


TRANSFORM Sum(g.工资) AS 工资

Select g.年, g.月, g.日, Sum(g.工资) AS 总计

FROM (

Select e.年, e.月, e.日, e.姓名, Sum(e.工资) AS 工资

FROM (

Select a.年, a.月, a.日, a.姓名, [b]![工资]*[a]![考勤] AS 工资

FROM

整形考勤表 AS a INNER JOIN (

Select c.年, c.月, c.日, IIf([a]![考勤]=Null,Null,[c]![整形]/[a]![考勤]) AS 工资

 FROM (

Select 年, 月, 日, Sum(a.考勤) AS 考勤

FROM 整形考勤表 AS a GROUP BY 年, 月, 日

)  AS a

 INNER JOIN 工段工资表 AS c ON (a.日 = c.日) AND (a.月 = c.月) AND (a.年 = c.年)

)  AS b ON (a.日 = b.日) AND (a.月 = b.月) AND (a.年 = b.年)

)  AS e GROUP BY e.年, e.月, e.日, e.姓名

)  AS g

GROUP BY g.年, g.月, g.日

orDER BY g.年, g.月, g.日

PIVOT g.姓名;


附   件:

点击下载此附件


那么双怎样理解呢?不妨按第二种写法中首先按中间的红色部分开始,按两头颜色相同部分全部复制到示例中查询,会得到想要的最终结果【整形工资表】。
通过这个示例,反过来说,复杂的查询,能不能一步一步的进行,最后一个一个的替换呢?完全可以。本例中就用了5步完成。完成后将前面的全部删除,只保留最终结果的一个即可。本例中将查询1-查询4完全删除只保留【查询5】,可以看到【整形工资表】的结果与【查询5】的结果是完全一样的。


Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助