table_A
no desciption
1 Apple
2 orange
3 banana
4 kiwi
5 papaya
table_B
no price mydate
1 10.00 20210801
2 8.00 20210802
3 5.00 20210803
4 12.00 20210804
5 4.00 20210805嗨,我尝试使用这个SQL和union,但是都显示了一个错误。
select '-' a.description, '-' b.price from dual union all select a.description,sum(b.price) from table_A a, table_B b where a.no=b.no and b.mydate='20210801' group by a.description;
ORA-00923 : FROM keyword not found where expected我需要结果
a.description sum(b.price)
- - <-----dummy dash always on first row
Apple 10.00任何人的帮助都是非常感谢的。
发布于 2021-08-10 11:44:42
b.
union all的第一部分中没有别名a和b,所以只需删除a.和union all使用从字符到日期的隐式转换,而使用文字日期:select '-' as description, '-' as price from dual
union all
select a.description,to_char(sum(b.price))
from
table_A a
join table_B b
on a.no=b.no
where b.mydate=date'2021-08-01'
group by a.description;发布于 2021-08-10 11:41:45
一种选择是
rn列( 1表示结果中的“行号1”)to_char函数应用于sum(b.price),因为-使用union -查询的列数和数据类型必须匹配H 211F 212所以:
SELECT description, price
FROM (SELECT 1 rn, '-' description, '-' price FROM DUAL
UNION ALL
SELECT 2 rn, a.description, TO_CHAR (SUM (b.price))
FROM table_A a, table_B b
WHERE a.no = b.no
AND b.mydate = '20210801'
GROUP BY a.description)
ORDER BY rn应用于您的示例数据-返回
DESCRIPTION PRICE
--------------- ----------------------------------------
- -
apple 10请注意:
mydate应该是一个真正的date数据类型列;不要使用字符串,因为没有什么可以阻止您将2f$8-23输入varchar2列,而且这肯定不是一个有效的日期值join;条件数据应该满足的保留where子句,以便返回就像这样:
from table_a a join table_b b on a.no = b.no --> JOIN
where b.mydate = date '2021-08-01' --> MYDATE being DATE datatypehttps://stackoverflow.com/questions/68726086
复制相似问题