以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]分段统计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104159)

--  作者:xndd
--  发布时间:2017/7/24 17:08:00
--  [求助]分段统计问题
我的userinfo表中有一列是年龄列,我想要统计出20岁以下、21-30、31-40、41-50、51以上等年龄段的数据
我的想法是用sql生成临时表,再用临时表去统计分析,但是写了几种sql都不行:

请问老师有没有更好的办法,谢谢!

怎么没法插入sql语句代码到论坛?

图片点击可在新窗口打开查看此主题相关图片如下:121212121212.png
图片点击可在新窗口打开查看

提示:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20170724171221.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/7/24 17:13:22编辑过]

--  作者:有点甜
--  发布时间:2017/7/24 17:46:00
--  

先看懂这个句

 

Select (Case when 年龄 < 20 Then 1 Else 0 End) As 少于20, (Case when 年龄 >= 20 And 年龄 < 30 Then 1 Else 0 End) As 20到30 from {表A}

 

然后再sum即可。


--  作者:xndd
--  发布时间:2017/7/25 8:35:00
--  
这条语句在sqlserver里都正常,但是到了foxtable里就不正常的
.NET Framework 版本:2.0.50727.8745
Foxtable 版本:2017.6.12.1
错误所在事件:
详细错误信息:
IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。


--  作者:有点甜
--  发布时间:2017/7/25 9:01:00
--  

1、你在foxtable里面测试的是 内部表,还是access表,还是sqlserver表? 不同的表sql语句不一样的。

 

内部表和access表,要用iif函数代替case when

 

2、贴出你完整的sql语句。


--  作者:xndd
--  发布时间:2017/7/25 9:08:00
--  
我没法在这里发出sql语句,论坛会提示违反了论坛什么什么,好奇怪,可能是没权限
我基于你的sql,先直接放在foxtable里面,就提示上面的问题,我是内部表的。

--  作者:有点甜
--  发布时间:2017/7/25 10:08:00
--  
以下是引用xndd在2017/7/25 9:08:00的发言:
我没法在这里发出sql语句,论坛会提示违反了论坛什么什么,好奇怪,可能是没权限
我基于你的sql,先直接放在foxtable里面,就提示上面的问题,我是内部表的。

 

内部表要这样写,如

 

Select iif(年龄<20, 1, 0) As 少于20, iif(年龄>=20 And 年龄<30, 1, 0) As 20到30 from {表A}


--  作者:xndd
--  发布时间:2017/7/25 10:42:00
--  
提示: 至少一个参数没有被指定值。
--  作者:有点甜
--  发布时间:2017/7/25 11:27:00
--  
以下是引用xndd在2017/7/25 10:42:00的发言:
提示: 至少一个参数没有被指定值。

 

那就是你的列名写错了。而且,你sql语句的列名,不能是表达式列。