小编Nic*_*nov的帖子

需要显示一个虚拟月份 - Oracle SQL

对于月费报告目的,需要显示如下所述的输出.只有当月支付费用时才会在表格中输入数据,否则表格中不会显示该月份.

执行查询

select reg_id, dop,to_char(dop, 'FMMonth,YYYY') Month, status 
  from fees_status
 where dop between ('1-Jul-2012') and ('1-Dec-2012')
Run Code Online (Sandbox Code Playgroud)

输出是

REG_ID  DOP         MONTH           STATUS

AE-8    7/1/2012    July,2012       PAID
AE-8    9/1/2012    September,2012  PAID
AE-8    11/1/2012   November,2012   PAID
AE-8    12/1/2012   December,2012   PAID
Run Code Online (Sandbox Code Playgroud)

对于报告目的,需要输出为

REG_ID  DOP         MONTH           STATUS

AE-8    7/1/2012    July,2012       PAID
AE-8    8/1/2012    August,2012     NOTPAID
AE-8    9/1/2012    September,2012  PAID
AE-8    10/1/2012   October,2012    NOTPAID
AE-8    11/1/2012   November,2012   PAID
AE-8    12/1/2012   December,2012   PAID
Run Code Online (Sandbox Code Playgroud)

有人可以帮助显示上面提到的输出吗?

sql oracle

4
推荐指数
1
解决办法
343
查看次数

带有Null的Oracle SELECT XMLELEMENT

使用Oracle 11,当我这样做

  SELECT XMLELEMENT("dummy", NULL) as xml_1 
    FROM dual
Run Code Online (Sandbox Code Playgroud)

输出是 <dummy></dummy>

我怎么强行回来 <dummy />

xml oracle oracle11g

4
推荐指数
1
解决办法
3429
查看次数

SQL SELECT:我需要一个"IN ALL"子句

我有两张桌子.而且我需要organizer_id在2010年到2012年之间组织所有活动的所有活动.

event
--------- 
event_id
name
year


event_organizer
---------
event_id
organizer_id
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情:

SELECT organizer_id 
  FROM event_organizer
 WHERE event_id IN (SELECT event_id 
                      FROM event 
                     WHERE year>=2010 AND year<=2012);
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为我只需要organizer_id在2010年和2012年之间组织所有事件.我不知道查询应该如何按照我的意愿运行.

sql oracle select

4
推荐指数
1
解决办法
9719
查看次数

如何在PLSQL中获取发生异常的过程/函数名称?

如何获取PLSQL中发生异常的过程/函数名称?我需要这个来创建一个包中有问题的过程的日志.

oracle plsql exception

3
推荐指数
1
解决办法
997
查看次数

将一个选择结果除以另一个选择结果

我看过其他类似的问题,它们似乎与我想要做的有点不同。

我有一个查询,我在其中选择两个计数值,我想将一个除以另一个。

这是我的工作代码:

SELECT (SELECT count(DISTINCT s.lastfirst) 
          FROM students s
          JOIN cc ON s.id = cc.studentid
          JOIN courses c on cc.course_number = c.course_number
         WHERE cc.schoolid='109'
           AND c.course_name LIKE 'AP %' 
           AND substr(cc.termid,0,1) <> '-'
           AND cc.dateenrolled BETWEEN to_date('08/01/2010','MM/DD/YYYY') AND  
               to_date('08/01/2011','MM/DD/YYYY')) as AP, 
       (SELECT count(DISTINCT s.lastfirst) 
          FROM students s
          JOIN cc ON s.id = cc.studentid
          JOIN courses c on cc.course_number = c.course_number
         WHERE cc.schoolid = '109'
           AND substr(cc.termid,0,1) <> '-'
           AND cc.dateenrolled BETWEEN to_date('08/01/2010','MM/DD/YYYY') 
           AND to_date('08/01/2011','MM/DD/YYYY')) as ttl
 FROM DUAL
Run Code Online (Sandbox Code Playgroud)

这是我打破它的地方: …

sql oracle

3
推荐指数
1
解决办法
1万
查看次数

SQL逻辑运算符

什么是非学生,律师或教育工作者的职业?按降序字母顺序列出它们?

SELECT Occupation 
  FROM Viewer 
 WHERE occupation NOT IN 'student,lawyer,educator' 
ORDER BY occupation desc; 
Run Code Online (Sandbox Code Playgroud)

我一直在收到错误.我究竟做错了什么?

sql oracle

3
推荐指数
1
解决办法
147
查看次数

PL/SQL从固定的字符集生成随机字符串

如何从一组固定的字符中生成PL/SQL中的随机字符串?例如:我想生成一个长度为10的字母数字字符串,它排除某些字符和数字,例如I,O,0等.我找不到DBMS_RANDOM.STRING()使用所需集合播种的方法.PL/SQl中是否有内置方式来执行此操作?

谢谢.

oracle plsql

3
推荐指数
1
解决办法
8997
查看次数

在oracle中查找重复值

我正在使用此查询在表中查找重复值:

select col1, 
       count(col1) 
  from table1 
 group by col1 
having count (col1) > 1 
 order by 2 desc;
Run Code Online (Sandbox Code Playgroud)

但是我想在同一个表中添加另一个列,如下所示:

select col1, 
       col2, 
       count(col1) 
  from table1 
 group by col1 
having count (col1) > 1 
 order by 2 desc;
Run Code Online (Sandbox Code Playgroud)

我的ORA-00979第二个查询出错了

如何在搜索中添加其他列?

sql oracle

3
推荐指数
1
解决办法
2万
查看次数

如何解决错误:ORA-01406提取的列值被截断了?

我正在尝试执行此查询:

select * 
  from gi_todo_isim 
 WHERE d_insercao >= '04-JUL-13' 
   AND d_insercao <= '25-JUL-13'
Run Code Online (Sandbox Code Playgroud)

但是,这我回来这个错误:

ORA-01406 fetched column value was truncated
Run Code Online (Sandbox Code Playgroud)

如果我尝试计算存在多少列:

select count(*) 
  from gi_todo_isim 
 WHERE d_insercao >= '04-JUL-13' 
   AND d_insercao <= '25-JUL-13'
Run Code Online (Sandbox Code Playgroud)

答案是1661597很大的。任何人都可以提供任何解决方案如何执行此查询?

sql database oracle plsql sql-navigator

3
推荐指数
1
解决办法
3万
查看次数

Oracle:回滚仅循环的崩溃迭代

如果一个或多个迭代崩溃,我需要帮助来完成迭代回滚,如果成功,我需要提交所有其他迭代.如果崩溃,它将回滚整个事务.认为这可以通过Savepoints来完成,但我对它们并不是很熟悉.这是我尝试实现的基本示例.

    DECLARE 
      ...
    BEGIN
      FOR i IN 1 .. 10
      LOOP
        BEGIN
          -- Some DML and stored procs with DML
          INSERT INTO a .. .;
          INSERT INTO b .. .;
          INSERT INTO a .. .;
          DELETE FROM a .. .;
          UPDATE INTO c .. .;
          m_package.some_proc_with_dml;
        EXCEPTION
          WHEN OTHERS THEN
            merror   := merror + || ', ' || + sqlerrm;
            miserror := TRUE;
        END;
      END LOOP;

      COMMIT;

      IF miserror THEN
        raise_application_error(-20000, merror);
      END IF;

    END;
Run Code Online (Sandbox Code Playgroud)

提前致谢.

oracle plsql transactions

3
推荐指数
1
解决办法
3720
查看次数

标签 统计

oracle ×10

sql ×6

plsql ×4

database ×1

exception ×1

oracle11g ×1

select ×1

sql-navigator ×1

transactions ×1

xml ×1