如何改进union all

ACKAI 2007-12-04 03:32:17
我使用union all连接两个查询,得到07年和06年各个产品的业绩
两个查询语句只是时间段不同
我在查询分析器上看到业绩表被访问了两次
有没有什么方法只访问业绩表一次就能够得到同样的结果
格式:
产品1 8888 当期业绩
产品2 9999 当期业绩
产品1 7777 去年同期业绩
产品2 7878 去年同期业绩

...全文
106 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyann 2007-12-05
  • 打赏
  • 举报
回复
select year(billDate),prod,sum(amt)
from salesRecords
where year(billDate)=2006 or year(billDate)=2007
group year(billDate),prod
OracleRoob 2007-12-05
  • 打赏
  • 举报
回复
多种方式,用union all访问次数虽多,但效率应该比用or高些。
OracleRoob 2007-12-04
  • 打赏
  • 举报
回复
Access中用iif()函数,SQL Server中用case when语句。
ACKAI 2007-12-04
  • 打赏
  • 举报
回复
还不知道有iif这个函数呢,看一下帮助!谢谢
wwwwb 2007-12-04
  • 打赏
  • 举报
回复
select f1,sum(iif(ny between #2007/01/01# and #2007/11/30#,1,0 )),
sum(iif(ny between #2006/01/01# and #2006/11/30#,1,0 ))
from tt group by f1
ACKAI 2007-12-04
  • 打赏
  • 举报
回复
谢谢!
如果这个时间是2007/01/01-2007/11/30和2006/01/01-2006/11/30的话,直接使用or 或者between and 怎么两段时间的业绩分别统计出来呢?
wzy_love_sly 2007-12-04
  • 打赏
  • 举报
回复
select * from 业绩表 where 时间 between 去年 and 今年 order by 时间
子陌红尘 2007-12-04
  • 打赏
  • 举报
回复
在查询条件里用 or 关联之前两个单独查询的条件。

7,714

社区成员

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

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