首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用select语句插入两个表组合的虚拟破折号值的第一行

如何使用select语句插入两个表组合的虚拟破折号值的第一行
EN

Stack Overflow用户
提问于 2021-08-10 11:34:58
回答 2查看 50关注 0票数 1
代码语言:javascript
复制
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,但是都显示了一个错误。

代码语言:javascript
复制
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

我需要结果

代码语言:javascript
复制
a.description    sum(b.price)
   -                  -       <-----dummy dash always on first row
   Apple            10.00

任何人的帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-10 11:44:42

b.

  • Don't
  1. union all的第一部分中没有别名ab,所以只需删除a.union all使用从字符到日期的隐式转换,而使用文字日期:

代码语言:javascript
复制
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;
票数 0
EN

Stack Overflow用户

发布于 2021-08-10 11:41:45

一种选择是

  • 使用子查询
  • 它包含附加的rn列( 1表示结果中的“行号1”)
  • to_char函数应用于sum(b.price),因为-使用union -查询的列数和数据类型必须匹配H 211F 212

所以:

代码语言:javascript
复制
  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

应用于您的示例数据-返回

代码语言:javascript
复制
DESCRIPTION     PRICE
--------------- ----------------------------------------
-               -
apple           10

请注意:

  • mydate应该是一个真正的date数据类型列;不要使用字符串,因为没有什么可以阻止您将2f$8-23输入varchar2列,而且这肯定不是一个有效的日期值
  • 尝试切换到join;条件数据应该满足的保留where子句,以便返回

就像这样:

代码语言:javascript
复制
from table_a a join table_b b on a.no = b.no   --> JOIN
where b.mydate = date '2021-08-01'             --> MYDATE being DATE datatype
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68726086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档