设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

这样的视图怎么做???

[复制链接]
跳转到指定楼层
1#
发表于 2003-5-8 05:59:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
表1
日期    姓名   销售金额   
4-2     小李     100
4-2     小张     150
4-3     小陈     100
4-3     小李     200
表2
日期  姓名   业务费用   
4-1     小李        50
4-1     小张        60

我想得到一个日期段内各员工的销售和业务的费用做成一个视图,如下:
姓名           销售金额         业务费用
小李             300                 50
小张             150                 60
小陈              100                  0
直接通过表1和表2能得到以上的结果吗???????
请大家帮帮忙,,,,,,
在线紧急等待!!!!!!!!!!!!!!
[em03]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-5-8 16:37:00 | 只看该作者
以下定义了两个表 test1,test2,其中字段 UID 对应于你的表中的姓名, test1 的 no 字段对应于销售金额, test2 的 NO 字段对应于 业务费用.dtm 字段对应于日期.
我在视图中加入了 dtm > 3-29 的 where 条件,你可能要根据自己的要求更改此限定.

SELECT ta.UID, ta.NOA, tb.NOB
FROM (SELECT UID, SUM([NO]) AS NOA
        FROM test1
        WHERE dtm > '2003-03-30'
        GROUP BY uid) ta FULL OUTER JOIN
          (SELECT uid, SUM([no]) AS NOB
         FROM test2
         WHERE dtm > '2003-03-30'
         GROUP BY uid) tb ON ta.UID = tb.uid
3#
 楼主| 发表于 2003-5-10 05:21:00 | 只看该作者
谢谢Roadbeg!
试验了不通过,出现ADO错误:语法错误或违反访问规则。
我不理解ta,tb是什么概念?
4#
发表于 2003-5-10 06:34:00 | 只看该作者
ado 错?我这是在企业管理器里直接写的.等下调试一段代码给你.


[此贴子已经被作者于2003-5-9 23:08:26编辑过]

5#
发表于 2003-5-10 07:08:00 | 只看该作者
我试了在 adp 中可以运行啊,你是在 adp 中还是 mdb 中?
或者你如此改动试一下.
SELECT ta.UID, ta.NOA, tb.NOB
FROM (SELECT UID, SUM([NO]) AS NOA
        FROM test1
        WHERE dtm > #2003-03-30#
        GROUP BY uid) as ta FULL OUTER JOIN
          (SELECT uid, SUM([no]) AS NOB
         FROM test2
         WHERE dtm > #2003-03-30#
         GROUP BY uid) as tb ON ta.UID = tb.uid

ta,tb 是子查询的别名.





[此贴子已经被作者于2003-5-10 15:29:07编辑过]

6#
 楼主| 发表于 2003-5-12 11:35:00 | 只看该作者
在win2k+access2002的adp下测试:
如小陈在4月内只有销售额而没有业务费,则只会显示一项业务费用,而这一行没有销售员姓名。
这样得出的结果让人看到有销售额而不知道是哪个销售员的。
7#
 楼主| 发表于 2003-5-12 11:44:00 | 只看该作者
以下是引用adge在2003-5-12 3:35:02的发言:
在win2k+access2002的adp下测试:
如小陈在4月内只有销售额而没有业务费,则只会显示一项业务费用,而这一行没有销售员姓名。
这样得出的结果让人看到有销售额而不知道是哪个销售员的。

我知道原因了,如果当得出的查询是用ta.UID的话,则ta中有纪录就可以显示UID及ta,tb中的查询,如ta中没有纪录tb中有的话,则就会有显示tb中的纪录,但显示不出UID,这个问题还是达不到原题意的结果!!
请Roadbeg帮忙能否得到原题意的结果!
再度谢谢Roadbeg!!!!!!!!!!!![em05]
8#
发表于 2003-5-12 23:04:00 | 只看该作者
SELECT tc.uid, ta.NOA, tb.NOB
FROM (SELECT UID, SUM([NO]) AS NOA
        FROM test1
        WHERE dtm > '2003-03-30'
        GROUP BY uid) ta RIGHT OUTER JOIN
          (SELECT uid, SUM([no]) AS NOB
         FROM test2
         WHERE dtm > '2003-03-30'
         GROUP BY uid) tb RIGHT OUTER JOIN
          (SELECT DISTINCT uid
         FROM test1
         WHERE dtm > '2003-03-30'
         UNION
         SELECT DISTINCT uid
         FROM test2
         WHERE dtm > '2003-03-30') tc ON tb.uid = tc.uid ON ta.UID = tc.uid

同样的,你可能要把 '2003-03-30' 换成 #2003-03-30#
并且 (select.....) tb 换成 (select .... ) as tb 等等.
9#
 楼主| 发表于 2003-5-15 03:59:00 | 只看该作者
试验通过,谢谢ROADGEG!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-10 20:23 , Processed in 0.177100 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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