| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 848 人关注过本帖
标题:统计查询问题?
只看楼主 加入收藏
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
结帖率:75.61%
收藏
已结贴  问题点数:10 回复次数:12 
统计查询问题?
一个A表:
性质(字符)  日期(日期型)
重大      01/01/1999     
一般            03/04/1994
特大            05/05/1993
....            ...
问题:统计出每年每个月的性质,若某年某月无记录则显示为零
实验:
另外建一表B: CREAT TABL B(yf n(2)) /记录为12个,分别为1至12月
sele A.*
sum (iif(isnu(B.日期)) or at ('一般',B.性质)=0,0,1) as 一般 from A left oute join B on B.yf=month(A.日期) and year(日期) grou by B.yf
结果显示错误?打不到YY?
搜索更多相关主题的帖子: 统计 
2012-10-23 21:22
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
你的B表不是只有yf字段吗。
怎么sele语句中又出现了b.日期之类的字段。

我是来向高手学习的!
2012-10-23 22:33
jsyg
Rank: 2
等 级:论坛游民
威 望:1
帖 子:75
专家分:38
注 册:2012-10-20
收藏
得分:0 
我也在想字段不太一致,因为自己水平太差,所以没敢说。呵呵
2012-10-23 22:36
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:1 
回复 楼主 ycvf
这是个老问题,下面文件中有这个问题的详细解答
SQL-SELECT(任明汉).rar (108.88 KB)
2012-10-23 22:38
jsyg
Rank: 2
等 级:论坛游民
威 望:1
帖 子:75
专家分:38
注 册:2012-10-20
收藏
得分:1 
下载学习学习
2012-10-24 17:17
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
4楼,这个问题就是看的任明汉的SQL,里面的代码如下:
SELECT tempyf.*,;
  SUM(IIF(ISNULL(recdbf.日期) OR AT("一般",recdbf.性质)=0,0,1)) AS 一般,;
  SUM(IIF(ISNULL(recdbf.日期) OR AT("重大",recdbf.性质)=0,0,1)) AS 重大,;
  SUM(IIF(ISNULL(recdbf.日期) OR AT("特大",recdbf.性质)=0,0,1)) AS 特大;
 FROM tempyf LEFT OUTER JOIN recdbf ;
  ON tempyf.yf = MONTH(recdbf.日期) AND YEAR(日期) = ?yy;  
执行后提示找不到YY?

落花人独立,微雨燕双飞。
2012-10-24 22:46
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9821
专家分:27099
注 册:2012-2-5
收藏
得分:1 
认真看

坚守VFP最后的阵地
2012-10-24 22:59
ycvf
Rank: 2
等 级:论坛游民
帖 子:210
专家分:56
注 册:2012-8-25
收藏
得分:0 
sele tempy.*    /刚执行就提示错误
ISNULL(recdbf.日期) OR AT("特大",recdbf.性质)=0    |逻辑值or数值型=0  什么意思?
初学SQL,请指点迷津

落花人独立,微雨燕双飞。
2012-10-25 17:10
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:1 
以下是引用ycvf在2012-10-24 22:46:58的发言:

4楼,这个问题就是看的任明汉的SQL,里面的代码如下:
SELECT tempyf.*,;
  SUM(IIF(ISNULL(recdbf.日期) OR AT("一般",recdbf.性质)=0,0,1)) AS 一般,;
  SUM(IIF(ISNULL(recdbf.日期) OR AT("重大",recdbf.性质)=0,0,1)) AS 重大,;
  SUM(IIF(ISNULL(recdbf.日期) OR AT("特大",recdbf.性质)=0,0,1)) AS 特大;
 FROM tempyf LEFT OUTER JOIN recdbf ;
  ON tempyf.yf = MONTH(recdbf.日期) AND YEAR(日期) = ?yy;  
执行后提示找不到YY?
yy 是指具体那一年,如果不指定的话,那就是把表中所有的记录算在一起。而且如果要指定具体那一年的话,那这个 YEAR(日期) = ?yy 的条件是不能放在 where 或者 having 里的。

我是来向高手学习的!
2012-10-25 19:01
网路盲流
Rank: 2
等 级:论坛游民
威 望:2
帖 子:19
专家分:11
注 册:2012-10-12
收藏
得分:1 
SELECT YEAR(日期) 年份,MONTH(日期) 月份,性质,COUNT(*) 数量;
   FROM A;
   GROUP BY 1,2,性质
2012-10-26 14:56
快速回复:统计查询问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017484 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved