如何解决SQL-Informix错误导致另一个错误-镜子P.I.T.A的过道
| 我正在通过iSql使用Informix 11.50.FC6版本 我给一个“ 0”块的结果一个虚拟名称“ 1”SELECT c.id,CASE WHEN ( c.prog = \'UNDG\'
AND (c.grd IN (SELECT DISTINCT grd FROM grd_table WHERE att_fctr = 1) OR (c.grd IN (\'TR\',\'W\',\'LAB\',\'WC\')))
AND c.grd NOT IN (\'WM\')
AND c.stat NOT IN (\'X\',\'D\'))
THEN CAST(SUM(c.hrs) AS CHAR(4))
ELSE \'ELSED (att)\'
END att_hrs
FROM cw_rec c
WHERE c.id IN (SELECT DISTINCT id FROM stu_ids)
GROUP BY c.id
INTO TEMP cheese
WITH NO LOG;
这给我一个错误:
294: The column (att_hrs) must be in the GROUP BY list.
尝试按照建议修复错误:
SELECT c.id,\'D\'))
THEN CAST(SUM(c.hrs) AS CHAR(4))
ELSE \'ELSED (att)\'
END att_hrs
FROM cw_rec c
WHERE c.id IN (SELECT DISTINCT id FROM stu_ids)
GROUP BY c.id,att_hrs
INTO TEMP cheese
WITH NO LOG;
然后给我这个错误:
217: Column (att_hrs) not found in any table in the query (or SLV is undefined).
他们不是在GROUP BY
派对中就很容易找到found1ѭ的,但是现在突然之间,the1ѭ消失了……
你能解决这个问题吗?
真正的错误是什么解决方案,这里发生了什么,我需要怎么做才能解决?
编辑
我尝试了RET对ѭ9的解决方案,并收到以下错误:
321: Cannot group by aggregate column.
解决方法
您不能将标签用于分组依据列表中的派生列。在这种情况下,需要按顺序排列分组列。
将您的SQL更改为read11ѭ
这是手册中的相关条目。具体地,图269。
更新:我没有足够仔细地检查CASE语句-我认为您尝试的内容是不可能的,因为每一行在将其视为分组列还是聚合列时都可能有所不同。
也许您需要尝试这样的事情:
SELECT c.id,NVL(SUM(CASE
WHEN ( c.prog = \'UNDG\'
AND (c.grd IN (SELECT DISTINCT grd FROM grd_table WHERE att_fctr = 1) OR (c.grd IN (\'TR\',\'W\',\'LAB\',\'WC\')))
AND c.grd NOT IN (\'WM\')
AND c.stat NOT IN (\'X\',\'D\'))
THEN c.hrs
ELSE NULL)::CHAR(4)
END),\'ELSED (att)\') AS att_hrs
FROM cw_rec c
WHERE c.id IN (SELECT DISTINCT id FROM stu_ids)
GROUP BY c.id
INTO TEMP cheese
WITH NO LOG;
这未经测试,但希望能给您带来启发-总是在进行聚合,结果被转换为文本。
, 尽管以下链接是另一种类型的问题,但它可能为使用GROUP BY子句解决您的问题提供了一些启示。使用多个SELECT INTO语句编译ACE报告时出错
, 问题在于列list13 appear,without14ѭ,c.stat
,它们出现在SELECT列表中而未包含在GROUP BY中或未聚合。
您似乎正在根据某些列的值来计算ѭ1but,但是问题是:如果某些列的值与CASE表达式中某些行中的条件匹配,而对于某些相同的ѭ17in,某些列中的值不匹配,该怎么办?那可能吗?如果是,那that17ѭ的att_hrs
的值应该是多少?
我可以期待两个答案(我不假装它们是仅有的两个可能的答案,也许我错过了一些东西):
如果id
的所有行均不符合CASE条件,则应为\'ELSED (att)\'
,否则应为符合条件的行之和。
如果该id
的某些(一个或多个)行与CASE条件不匹配,则应为\'ELSED (att)\'
。仅当所有行均符合条件时,才应计算总和。
综上所述,目前,我只回答了有关查询中实际问题的问题。在您详细说明我的问题后,我将很乐意为您提供解答。
, 我听取了所有人的建议,认为不可能,然后使用UNION
块将其重写。
表和字段名称可能有所不同,但是这里是这样的:
SELECT s.id,SUM(c.hrs) hrs,\'ATT\' type
FROM expected_contacts s,OUTER stu_crs c
WHERE s.id = c.id
AND c.prog = \'UNDG\'
AND c.grd NOT IN (\'WM\')
AND c.stat NOT IN (\'X\',\'D\')
AND (c.grd IN (SELECT DISTINCT grd
FROM grd_table
WHERE att_fctr = 1)
OR (c.grd IN (\'TR\',\'WC\')))
AND c.crs_no <> \'PARM101\'
GROUP BY s.id
UNION
SELECT s.id,\'EARN\' type
FROM expected_contacts s,OUTER stu_crs c
WHERE s.id = c.id
AND c.prog = \'UNDG\'
AND (c.grd <= \'DI\' or c.grd like \'S%\' or c.grd IN (\'P\',\'TR\'))
AND c.stat NOT IN (\'D\',\'X\')
GROUP BY s.id
UNION
SELECT s.id,\'DEV\' type
FROM expected_contacts s,OUTER stu_crs c
WHERE s.id = c.id
AND c.prog = \'UNDG\'
AND ( c.crs_no LIKE \'ENGL0%\'
OR c.crs_no LIKE \'MATH0%\'
OR c.crs_no LIKE \'ENGSL0%\'
OR c.crs_no LIKE \'ESOL0%\')
AND c.stat IN (\'C\',\'R\',\'W\')
AND c.grd <> \'IP\'
GROUP BY s.id
INTO TEMP stu_acad
WITH NO LOG;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。