我在寻找这方面的例子或信息时遇到了很多麻烦。我研究过PIVOT,但我发现的示例让我有点困惑,不知道到底是怎么回事。我也不想对数据求和或分组。
实际上,我有一个返回2行4列的查询
A B C D
--------
1 2 4 8
2 4 8 0
我想让它看起来像
A B C D A2 B2 C2 D2
-------------------
1 2 3 4 2 4 8 0
这是不是没有PL/SQL就能完成的事情?
编辑:如果有一种方法可以在固定的行数和列数上做到这一点-我仍然欢迎这种方法的答案。理想情况下,它也可以在SQL Server上运行,但我对Oracle特定的解决方案很满意。
我使用的是Oracle,并且我有一个非常大的表。我需要检查是否存在满足一些简单条件的行。使用简单SQL实现这一点的最佳方法是什么?
这是我最好的猜测,虽然它可能对我的目的来说已经足够快了,但我很想学习一种规范的方法,基本上在Oracle中执行SQL Server的"exists“:
select count(x_id) from x where x.col_a = value_a and x.col_b = value_b;
count()将在另一层中作为布尔值返回。主要的一点是,我希望Oracle对该查询执行最低限度的操作--我只需要知道是否有符合条件的行。
是的,这些列肯定会被编入
我必须使用原生sql从sap的oracle数据库中选择n行。在open sql中,查询将如下所示
select * from myDB where size > 2000 upto n rows.
我从其他帖子中学到的等价的原生sql查询是
SELECT * FROM myDB WHERE SIZE > 2000 AND rownum <= 100
这是正确的吗?
是否需要将rownum作为DB表中的一个字段?
背景:数据从Oracle迁移到Server,表A同时存在于Oracle和Server中。
表A在Oracle中有4列作为主键,并已复制到Server。当我从Oracle的表A中选择1000条记录时,如何使用一个查询在Server中选择相同的记录?
Oracle中的SQL:
SELECT
A, B, C, D
FROM
(SELECT ROWNUM AS RN, T1.* FROM T1)
WHERE
RN > 0 AND RN <= 1000
我想获取一个特定的列值a.id,并将其存储到变量v_id中。然后使用此值传递到存储过程中。
DECLARE v_id a.id%TYPE;
BEGIN
SELECT id into v_id from a where a.name='test' and rownum <2 order by id desc;
Print v_id;
doSomething(v_id);
END;
/
我在Oracle SQL Developer中得到了这个错误:
错误报告: ORA-06550:第3行,第7栏:请-00103:遇到符号"V_ID“时,需要下列之一:
:=。(@%;
我在这里有麻烦了。
我想根据该列的最大值(时间戳)来选择一个列,但我仍然坚持要检索它。假设我有以下数据:
Comments
========
abcd 2012/08/14 8:03:03 AM more data inside <- I want to retrieve this
hshsh 2012/08/13 1:03:03 AM some other comments
hahhah 2012/08/10 8:03:03 PM test it.
检索max(时间戳)的SQL是
select max(substr(comments, instr(comments, '2012
日安,
我想更改一些程序代码(主要是SQL代码),因为数据库已经从DB2更改为Oracle。
这里有一个例子,我成功地改变了,但我并不真正理解它,我无法从谷歌找到它。
以下是原始SQL查询代码(使用DB2):
SELECT *
FROM (SELECT T0.CREATEDBY AS C1, row_number() OVER ( ORDER BY T0.GROUPNAME) AS rownum
FROM IBSADMIN.CCGROUP T0
WHERE T0.GROUPID != 0001 AND T0.GROUPID != 001 AND T0.CHANNEL = 'CC&
在使用SELECT TOP 5 * FROM SOMETABLE时给出了一个错误
ORA-00923: FROM关键字未在预期中找到
我正在使用Oracle 11g。我知道使用rownum做同样的事情,但只是想知道在Oracle中根本不支持使用SQL?为了使SQL在Oracle中发挥作用,需要做任何额外的事情吗??
我正在尝试对不包含主键的表执行select查询,因此我在select查询中包含row num,以便结果集变为可滚动,但它没有更新,并给出了下面的错误 Java代码: import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class Test
{
public static void main(String[] args) throws Exception
{
Connection con = Provider.getOracleConn
以下SQL语句在Server中工作,但在Oracle中不起作用:
UPDATE example
SET ID = (SELECT MIN(ID) FROM example) + rownum
Oracle抱怨:
SQL命令未正确结束
为什么这段代码在Server中工作得非常好,而在Oracle中却是如此?请帮帮忙。
作为What columns generally make good indexes?的后续,我试图知道哪些列是我的查询的良好索引候选者? 对我的查询使用ROWNUM,我应该将哪些列添加到索引中以提高我对oracle数据库的查询性能?我已经在startdate和enddate上创建和索引了。 SELECT
ID,
startdate,
enddate,
a,
b,
c,
d,
e,
f, /*fk in another table*/
g /*fk in another table*/
FROM tab
WHERE (enddate IS NULL ) AND ROWNUM <=
我只想得到这个查询的第一个结果,但是每当我写下限制。Oracle SQL Developer抛出此错误。
*ORA-00933: SQL命令未正确结束00933。00000 - "SQL命令未正确结束“*原因:
操作:错误在行:6列:7
以下是守则:
SELECT IDBAR FROM ( SELECT PARRANDEROS.FRECUENTAN.ID_BAR as IDBAR,
COUNT(PARRANDEROS.FRECUENTAN.ID_BAR) c
FROM PARRANDEROS.FRECUENTAN
GROUP BY PARRANDEROS.FRECUENTAN.ID
我对数据库很陌生,已经开始学习SQL了。我正在尝试将MySQL查询转换为使用oracle数据库。
我正在使用Oracle 11g速成版本,并尝试了许多不同的答案,但不幸失败。我不知道为什么oracle在SQL中没有限制子句。
在MYSQL中如下所示:
select *
from emp
order by sal desc
limit 1,1
对于如何使用oracle中的rownum来转换限制,我已经看到了许多答案,但是无法找到如何编写偏移量。
我从StackOverflow那里得到了一个解决方案:
select * from emp
order by sal desc
OFFSET 1 RO
我有一个SQL查询,如下所示:
SELECT foo "c0",
bar "c1",
baz "c2",
...
FROM some_table
WHERE ...
为了应用限制,并且只从这个查询中返回记录的一个子集,我使用了以下包装器SQL:
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER (ORDER BY ...) rnum
FROM (
... original SQL goes her
在此之前,我刚刚开始使用Oracle SQL,所以请耐心等待。因此,我想将表中的一列粘贴到变量中,问题是必须在每个条目之后添加一个",“来调整变量。以下是我为实现这一目标所做的努力。
DECLARE
email clob;
counter int;
set counter := 0;
BEGIN
WHILE counter < 500
LOOP
SELECT mail INTO email FROM spam
email += ","
DBMS_OUTPUT.PUT_LIN
想象一下我有一张像下面这样的桌子:
|-----|-------|
| KEY | VALUE |
|-----|-------|
| A | 0 |
| B | 1 |
| C | 0 |
|-----|-------|
我想要做的是执行一个SQL查询,该查询将给出如下所示的表:
|---------------|------------|
| Without Value | With Value |
|---------------|------------|
| A | B |
| C
我对Oracle SQL比较陌生,我想知道是否有人能帮我解决这个问题。
我正在尝试从我的History表的Employee列返回前50行。在第一次使用“on”之后,我试图返回位于history中的“desk”的实例。
提前谢谢。
SELECT SUBSTR(History, INSTR(History, ' on ') + 3) AS subject
FROM Employee
WHERE subject LIKE '%desk%'
AND ROWNUM <= 50;
DB版本:Oracle11.1.2.1.0操作系统: OEL5
我试图使用SQL水平打印多个SELECT语句的结果,但无法达到我想要的结果。
多个SQL:
SELECT 'DB Version', version db_version FROM v$instance
UNION ALL
select 'Oracle Client', length(addr)*4 || '-bits' word_length from v$process where ROWNUM =1
UNION ALL
/
结果:
'DBVERSION'