【问题标题】:Need help on oracle query需要有关 oracle 查询的帮助
【发布时间】:2014-03-19 00:16:00
【问题描述】:

我有两个 oracle 表,表 1 包含学生信息,第二个表包含学生交易详细信息。现在我想要一个 sql 查询来显示每个学生的交易详情报告。例如学生证、姓名、金额、交易日期等。 注意,一个学生可以有很多交易,所以我想要这样一种情况,如果 ID 为 1 的学生购买了 3 件商品,在查询结果中我想查看学生 ID 1 和购买的 3 件商品的总和。 我不希望学生证重复3次和购买的物品数量。

谢谢

编辑

这是我目前的查询:

select 
    distinct(s.spriden_id), 
    s.spriden_last_name, 
    s.spriden_first_name, 
    t.tbraccd_detail_code, 
    t.sum(tbraccd_amount), 
    t.tbraccd_term_code,
    t.tbraccd_user, 
    t.TBRACCD_DATE 
from SPRIDEN s, TBRACCD t 
where s.spriden_pidm = t.tbraccd_pidm 
and t.tbraccd_term_code = 201320 
and t.tbraccd_desc = 'Misc Book Store Charges';

(第一个表是SPRIDEN,第二个表是TBRACCD)

【问题讨论】:

  • 发布表定义,发布样本数据,发布预期结果。
  • 我认为,您可以使用 SELECT 语句来做到这一点,但是如果没有任何表信息,这有点困难。您基本上是要求从头开始为您做这件事?
  • 不,这是我编写的脚本,但查询没有求和,并且不断重复学生 ID 和重复事务。
  • 在这里查看脚本:select distinct(s.spriden_id), s.spriden_last_name, s.spriden_first_name, t.tbraccd_detail_code, t.sum(tbraccd_amount), t.tbraccd_term_code, t.tbraccd_user, t. TBRACCD_DATE 来自 SPRIDEN s, TBRACCD t 其中 s.spriden_pidm = t.tbraccd_pidm 和 t.tbraccd_term_code = 201320 和 t.tbraccd_desc = 'Misc Book Store Charges';
  • 第一个表是SPRIDEN,第二个表是TBRACCD

标签: oracle


【解决方案1】:

您可以使用 GROUP BY 对学生进行分组,如下所示:

select 
    s.spriden_id, 
    sum(t.tbraccd_amount), 
from SPRIDEN s, TBRACCD t 
where s.spriden_pidm = t.tbraccd_pidm 
and t.tbraccd_term_code = 201320 
and t.tbraccd_desc = 'Misc Book Store Charges'
GROUP BY s.spriden_id;

修改版本选择所有列:

select 
    s.spriden_id, 
    t.tbraccd_entry_date, 
    t.tbraccd_term_code, 
    t.tbraccd_user,
    sum(t.tbraccd_amount)
from SPRIDEN s, TBRACCD t 
where s.spriden_pidm = t.tbraccd_pidm 
and t.tbraccd_term_code = 201320 
and t.tbraccd_desc = 'Misc Book Store Charges'
GROUP BY 
    s.spriden_id,
    t.tbraccd_entry_date, 
    t.tbraccd_term_code, 
    t.tbraccd_user;

【讨论】:

  • 您好,当我运行上述查询时,我收到一条错误消息 t.sum: invalid identifier!
  • 我更正了 sum 函数。表别名 (t.) 需要在 sum 函数中。
  • 非常感谢,但是当我运行此查询时,我收到一条错误消息:NOT A GROUP BY EXPRESSION!
  • 这是给出 NOT A GROUP BY EXPRESSION MESSAGE 的查询! select s.spriden_id,tbraccd_entry_date, tbraccd_term_code,tbraccd_user,sum(t.tbraccd_amount) from SPRIDEN s, TBRACCD t 其中 s.spriden_pidm = t.tbraccd_pidm and t.tbraccd_term_code = 201320 and t.tbraccd_desc = 'Misc Book Store Charges' BGROUP s.spriden_id;
  • 您还必须在 GROUP BY 子句中包含所有要选择的列。在答案中查看上面的修改版本。
猜你喜欢
  • 2013-10-28
  • 2011-10-09
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多