楼主: wshnyy
1695 7

悬赏 ERROR: There are only 8 columns to GROUP BY. 19626 is too large. [推广有奖]

  • 1关注
  • 0粉丝

本科生

67%

还不是VIP/贵宾

-

威望
0
论坛币
167 个
通用积分
0.1580
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1397 点
帖子
108
精华
0
在线时间
97 小时
注册时间
2005-3-10
最后登录
2023-4-22

10论坛币
悬赏
求助

Please help me to fix this problem
BTW, what does '19626 is too large" mean?


Thanks


ERROR: There are only 8 columns to GROUP BY. 19626 is too large.


proc
sql;
create table actetwaittime
as
SELECT
CASE
WHEN datepart(a.triage_time) = today()-1 THEN 'Yesterday'
ELSE put(datepart(a.triage_time), yymmddd8.)
END
as thedate,
CASE
WHEN S.ZONE_ID = 1 THEN 'North Zone' ELSE 'South Zone' END
as Zone,
S.SITE_DESC
as site,
a.ctas,
AVG (
CASE
WHEN b.predicted_wt <= 0.5 THEN 0.5
ELSE b.predicted_wt
END)
as Pmean,
AVG (a.time_seen_by_doctor - a.triage_time) *
24 as Amean,
( AVG (a.time_seen_by_doctor - a.triage_time) *
24 / AVG ( CASE WHEN b.predicted_wt <= 0.5 THEN 0.5 ELSE b.predicted_wt END) - 1) * 100
as rate,
today()
as Today
FROM rec.wait_time a, rec.snapshot b, REC.SITE s
WHERE a.snap_shot_id = b.snapshot_id
AND b.predicted_wt IS NOT NULL
AND a.time_seen_by_doctor IS NOT NULL
AND a.fasttrack IS NULL
AND put(S.SITE_ID,2.) = A.SITE_ID
AND A.CTAS IS NOT NULL
AND A.TRIAGE_TIME >= '01-JAN-2013'd
AND A.TRIAGE_TIME <'02-JAN-2013'd
GROUP BY
CASE
WHEN datepart(a.triage_time) = today()-1 THEN 'Yesterday'
ELSE put(datepart(a.triage_time), yymmddd8.)
END
,
CASE
WHEN S.ZONE_ID = 1 THEN 'North Zone' ELSE 'South Zone' END
,
S.SITE_DESC ,
a.ctas,
today()
;
Quit;




关键词:columns column Error Group There problem create ERROR
     抱歉 ,不是学计算机的,看不懂
我愿用我的生命去改变我的生命

使用道具

藤椅
pobel 在职认证  发表于 2013-9-26 08:24:40 |只看作者 |坛友微信交流群
Group BY 后面要跟变量的名字,或变量在SELECT子句中的位置。所以问题应该出在GROUP BY后面的CASE WHEN语句。

和谐拯救危机

使用道具

板凳
wshnyy 发表于 2013-9-26 09:23:22 |只看作者 |坛友微信交流群
多谢pobel,能帮我修改一下吗?或说得再详细一些吗?


使用道具

报纸
pobel 在职认证  发表于 2013-9-26 11:31:28 |只看作者 |坛友微信交流群
wshnyy 发表于 2013-9-26 09:23
多谢pobel,能帮我修改一下吗?或说得再详细一些吗?
你的SELECT子句中的变量有thedate,Zone, site, ctas,Pmean,Amean, rate,Today这8个变量。

所以你的GROUP BY语句中如果用变量名字的话,应该也是这8个变量(语法上来说也可以是from数据集中的其他变量。)
如果用数字,则只能是1,2,3,4,5,6,7,8这几个数字。
和谐拯救危机

使用道具

地板
wshnyy 发表于 2013-9-26 13:10:06 |只看作者 |坛友微信交流群
pobel 发表于 2013-9-26 11:31
你的SELECT子句中的变量有thedate,Zone, site, ctas,Pmean,Amean, rate,Today这8个变量。

所以 ...
你是说 group by 后面要跟thedate,Zone, site, ctas,Pmean,Amean, rate,Today 这8个名称,我跟的那5个,是不对的?

使用道具

7
pobel 在职认证  发表于 2013-9-26 13:43:23 |只看作者 |坛友微信交流群
wshnyy 发表于 2013-9-26 13:10
你是说 group by 后面要跟thedate,Zone, site, ctas,Pmean,Amean, rate,Today 这8个名称,我跟的那 ...
group by后面要跟哪些变量,按照什么顺序,是由需求决定的。

可以是 group by zone, site, ctas;
可以是 group by rate,amean;
可以是 group by 3,5,4;

但是group by 129; 就会报错,因为select里只有8个变量,用数字表示的时候,数字不能大于8.
和谐拯救危机

使用道具

8
wshnyy 发表于 2013-9-26 13:55:23 |只看作者 |坛友微信交流群
上面的例子中, group by 后 不应该跟
CASE
WHEN datepart(a.triage_time) = today()-1 THEN 'Yesterday'
ELSE put(datepart(a.triage_time), yymmddd8.)
END
而应该用 thedate 来代替它?


使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 02:42