SQL-错误代码“查询块的结果列数不正确”

我尝试制定2030年3月和4月所有约会的时间表 当然是“ xy”。我开始使用时遇到一些问题。到目前为止,我的SQL代码是

SELECT  abhaltung.persnr,abhaltung.raum_id,abhaltung.tag,abhaltung.lvanr,LVA.name  
from abhaltung,lva 
WHERE ((abhaltung.tag BETWEEN TO_DATE  ('2030/03/01','yyyy/mm/dd')AND TO_DATE('2030/04/30','yyyy/mm/dd'))
AND lva.name like 'xy')
UNION
SELECT abhaltung.to_hour|| ' : '|| abhaltung.to_minute as "BIS" from abhaltung
UNION
SELECT abhaltung.from_hour|| ' : '|| abhaltung.from_minute as "VON" from abhaltung

我遇到了我遇到的问题 “01789。00000-”查询块的结果列数不正确“”

我知道可能是重命名广告的列过多,但我无法以某种方式解决此问题

编辑(重命名和进一步澄清)

我的输出应类似于

从到 10:15 11:00 09:30 10:00

但是,时间戳记分钟和小时在单独的标签中 他们看起来像这样

from_hour from_minute to_hour to_minute 10 15 11 00 09 30 10 00

这就是为什么我要合并它们。

ilovec_ola 回答:SQL-错误代码“查询块的结果列数不正确”

您的第一个SELECT子句返回多个列,而后两个分别返回单个列。 UNION运算符要求所有结果集的列数均相同。

(我怀疑您根本不想要UNION,尽管不清楚您要完成什么。)

,

第一个SELECT有5列,而其他SELECT有一个UNION列。 UNION在SELECT中必须具有UNIque列数。

SELECT  abhaltung.persnr  || abhaltung.raum_id || abhaltung.tag || abhaltung.lvanr || LVA.name  
FROM abhaltung,lva 
WHERE ((abhaltung.tag BETWEEN TO_DATE  ('2030/03/01','yyyy/mm/dd')AND TO_DATE('2030/04/30','yyyy/mm/dd'))
AND lva.name like 'xy')
UNION
SELECT abhaltung.bis_stunde|| ' : '|| abhaltung.bis_minute as "BIS" from abhaltung
UNION
SELECT abhaltung.von_stunde|| ' : '|| abhaltung.von_minute as "VON" from abhaltung
,

您似乎想做的是计算BISVON的时间,并将它们包括在每一行中。在这种情况下,您不需要使用UNION,只需将计算添加到SELECT中:

SELECT  a.persnr,a.raum_id,a.tag,a.lvanr,l.name,a.to_hour   || ' : '|| a.to_minute as BIS,a.from_hour || ' : '|| a.from_minute as VON
from abhaltung a,lva l
WHERE a.tag BETWEEN TO_DATE('2030/03/01','yyyy/mm/dd')
                AND TO_DATE('2030/04/30','yyyy/mm/dd') AND
      l.name like 'xy')

我还展示了如何使用表别名(al)来帮助简化代码。

本文链接:https://www.f2er.com/3151891.html

大家都在问