我在网上搜索Oracle分页查询,他们中的大多数人告诉我将查询换行两次:
SELECT *
FROM (SELECT t.*, ROWNUM rn
FROM tableName t
WHERE ROWNUM < 200)
WHERE rn > 100
我想知道我能不能这样输入:
SELECT *, ROWNUM rn
FROM tableName t
WHERE ROWNUN BETWEEN 100 AND 200
看起来第二个也是一样的。这两个查询之间有什么(性能)差异吗?
我试图用Ms 2010编写一个查询,但它不允许在其中使用计数(不同的OrderID)语法,这样我就可以轻松地用oracle编写查询。
Select BrandID, Count(Distinct OrderID), Count(Distinct ModelID)
From ordertable
Where Trunc(Pur_Date) Between '01-Feb-2015' And '09-Feb-2015'
Group By BrandID
Order by BrandID
表结构:
OrderID BrandID ModelID
1
我会请求帮助了解Oracle、DB2、Sybase的所有关系数据库管理系统在子查询中支持公共表表达式(CTE)。我知道PostgreSQL支持,而MS SQL Server不支持。
SELECT a.*, b.*
FROM (WHERE aa as (
<<select_query>),
SELECT *
FROM aa
WHERE <<criteria>>
) as a
LEFT JOIN (
WITH bb as (
我在oracle中使用下面的sql查询来获得一个范围内的行数。 SELECT count(SERIALNR)
FROM my_tab
WHERE SERIALNR BETWEEN '93266070760000' AND '93266070809999'; 但是,如果我必须在一个查询中为多个范围运行一个查询,那么如何进行查询呢 93266070560000 93266070609999
93266070610000 93266070659999
93266070660000 93266070709999
93266070710000 932660
我有一个名为X的字段(在Oracle中为列),其值为"a1b2c3“、"abc”、"1ab“、"123”、"156“
我编写了一个sql查询,它只返回不带字母的纯数字值的X;从上面的示例中可以看到123和156。
使用Oracle语法编写的查询:
select X from where REGEXP_LIKE(X, '^[[:digit:]]+$')
结果:
123, 156
此外,我还需要编写一个查询,以获得100到150之间的值。
我怎么能用Oracle编写这样的查询呢?如下所示:
select X from where REGEXP
下面的查询有一些问题:
select * from
(
select inventory.location, inventory.itemnum as itemnum, item.description as itemdesc,
inventory.minlevel as olevel , invcost.avgcost from inventory join invcost on inventory.itemnum = invcost.itemnum join item on inventory.itemnum = item.itemnum
where inventory.loc
我正在尝试编写一个SQL语句,它在Oracle中多次重用With子句的子查询。
With mySubQ as (
...
)
Select Something
From SomeTable,
(
Select *
From mySubQ
where mySubQ.Something >= 0
) newSubQ
where mySubQ.Something = SomeTable.Something
这给了我错误- ORA-32034不受支持的使用WITH子句。
我遗漏了什么?
我需要查询Oracle数据库中的2个表。一个是当前表,另一个是历史表,具有几乎相同的标题。我希望能够在查询上有一个联合,但只有一个日期范围。我正在尝试做的一个简单的例子可能是一个更好的解释:
select order_number, insertdate
from do_table
where insertdate between '1-apr-17' and '8-apr-17'
union
select order_number, insertdate
from doi_table
where insertdat
我想展示一张结果表。数据来源于Oracle数据库上的SQL查询。我想一次显示结果一页(例如,10条记录),尽量减少发送到前端的实际数据。
同时,我要显示可能结果的总数(例如,显示123中的1-10 ),并允许分页(例如,计算每页10,123结果,因此13页)。
我可以通过一个count查询得到结果的总数。
SELECT count(*) AS NUM_RESULTS FROM ... etc.
我可以通过另一个查询获得所需的子集。
SELECT * FROM ... etc. WHERE ? <= ROWNUM AND ROWNUM < ?
但是,是否有办法在一个查询中获取所有相关
我试过很多次了,但我解决不了.
我正在执行Oracle SQL查询:
SELECT
TRUNC(months_between(sysdate, DateofBirth) / 12) AS "age"
FROM players
group by age
HAVING COUNT
(TRUNC(months_between(sysdate, DateofBirth) / 12)) > 30;
第4行中的错误: ORA-00904:“年龄”:无效标识符
有什么想法吗?
我有个问题。我有一个查询,它将作为夜间作业的一部分运行。这个查询应该给我当天发生的所有操作。然而,这是棘手的部分,它不会总是在同一时间运行。
因为它是夜间作业的一部分,所以在第1天,查询在00:05运行,而在第2天,它在23:55运行。这使查询变得复杂,因为我不能说使用今天的日期或使用昨天的日期。
到目前为止,我得到了以下查询:
select deuda_id from deuda where n_expediente in
(select
(case when to_char(sysdate, 'HH24:MI:SS') between '00:
我正在从事Netsuite项目,该项目限制了SQL的能力。测试是很困难的,因为我基本上是在猜测他们在GUI中构建的SQL。
我想将查询的结果过滤为具有负求和值的结果。
下面是一个有效的PL/SQL构造(除非有任何小的语法错误)?
SELECT SUM(amount) OVER(PARTITION BY itemid ORDER BY date ROWS UNBOUNDED
PRECEDING) AS "sum" FROM table WHERE sum < 0
第二,由于Netsuite的局限性,下面的结构是否有效?
SELECT SUM(amount) OV
我是Oracle数据库的新手。我需要的是Oracle中的等效查询,如来自SQL Server的示例(在Management Studio中读取结果)。在Oracle端,我使用的是来自底特律软件公司的Golden6。
declare @n integer
set @n = 100;
select * from table where id >= @n and id <= @n + 50
谢谢。
我正在对Oracle10g中的一个报告进行查询。
我需要生成每个课程的简短列表,以及它们在过去一年中提供的次数(包括实际上没有提供的课程)。
我创建了一个查询
SELECT coursenumber, count(datestart) AS Offered
FROM class
WHERE datestart BETWEEN (sysdate-365) AND sysdate
GROUP BY coursenumber;
它会产生
COURSENUMBER OFFERED
---- ----------
ST03 2
PD01
到目前为止,我尝试过这样做(Oracle SQL):
UPDATE table1
SET table1.ADDRESS =
(SELECT table2.ADDRESS
FROM table2 INNER JOIN table1 ON table1.ID = table2.ID
WHERE table1.ADDRESS <> table2.ADDRESS
AND table1.DATE BETWEEN TO_DATE ('9999-12-31')
我试图从Oracle转换到redshift,但遇到了这个函数转换问题。有人能帮我一下吗?:
Oracle:
RESOLVED_DATE BETWEEN DATE_TRUNC(TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD'),'Y') AND TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD')
RedShift:?
我正在尝试获取从年初到查询运行日期的日期。
我有以下递归查询,它可以在11g中运行,但在Oracle 10g数据库中不受支持:
with st as (
select
rownum id,
case
when rownum-1 < 1 then null
else rownum-1
end parent_id,
customer,
tickets
from tickets
),
st2(id, parent_id, customer, tickets, offset) as (
我的oracle数据库中有一个DATETIME字段,如图所示
我正在尝试创建一个查询,它在特定日期之间返回一些内容,但是这个查询没有返回任何内容。
SELECT *
FROM tbl_meter
WHERE TO_DATE(DATETIME,'DD/MM/YYYY') BETWEEN '%s' AND '%s'
我遗漏了什么?
编辑:
SELECT * FROM tbl_meter WHERE DATETIME BETWEEN '15/01/2014' AND '07/01/2014'
我有一个使用Oracle数据源的SSRS报告。我有一个疑问;
select * from myTable t where
t.date between Date '2009-08-01' and Date '2009-08-04' + 1
无论是在Oracle中还是在SSRS中,此查询都有效。当myTable列在08/01/2009和08/04/2009之间时,它从t.date获取所有行。t.date列的类型为Date()
现在,我希望日期成为参数。因此,我将查询更改为:
select * from myTable t where
t.date between
正在使用链接的SQL (Oracle)在SQL Server 2005/2008上运行以下SQL查询,我得到一个错误。
Declare @PriorMonth_StartDate Datetime
Declare @PriorMonth_EndDate Datetime
Set @PriorMonth_StartDate = '2012-03-01'
Set @PriorMonth_EndDate = '2013-10-31'
EXEC('
SELECT *
INTO #C_INFO
FROM OPENQUERY(ORACLE_CMI
我是Oracle DB的新手,我正在尝试编写一个查询,它将计数行的总和,这些行的字段奖励在3到4之间,然而,我需要将它们除以所有行的COUNT()。这意味着我需要数甚至行的奖励= 1,0,-1等。
以下是我试图使用的查询:
SELECT SUM(AWARD)/COUNT(*) FROM EVALUATION
WHERE AWARD BETWEEN 2 AND 4 ;
不过,我知道我只计算适合WHERE子句的行。我该怎么办?另外,我需要加上价值2的奖励金额,不过,只有50%。
可以像在IN中一样使用吗?下面的查询产生一个错误。
Select *
from employees
where salary between 2500 and 10000
and job_id NOT in (like '%MAN%', like '%CLERK%');
正确的语法是什么?我使用的是Oracle 11g
我希望将oracle-sql查询保留在python循环中。因此,很少需要在sql查询中放置python变量。下面是我的代码:
import pandas as pd
import cx_Oracle
for i in range(df.shape[0]):
a=df.iloc[i,0]
b=df.iloc[i,1]
c=df.iloc[i,2]
d=df.iloc[i,3]
con = cx_Oracle.connect('xyz', encoding='utf-8')
我有一个Oracle表,其中ORACLE time列以以下格式存储。
对于12 AM -0
对于1 AM - 3600
对于2 AM - 7200。。。
对于23 PM 82800
也就是说,如果时间是凌晨3点,那么它将被存储为10800如果时间是晚上11点,那么它将被存储为82800。
现在,我要选择不在下午11点到凌晨3点之间的记录
SELECT TIMECol
FROM MyTable
WHERE IBS_To_Time(TimeCol) NOT BETWEEN IBS_To_Time(10800) AND IBS_To_Time(82800)
IBS_To_Time会将秒转换为'
String sql="select id from period where '"+systemDate+"' between startDate and endDate";
我需要执行这个查询,并且我使用的是oracle 10g。我想要获取介于这两个日期之间的id。我面临的问题是,在oracle中,我的日期格式是“dd-mon-yy”,而systemDate的格式是yyyy-mm-d.所以有没有办法将java日期转换为dd-mon-格式或执行上述查询的任何其他方法...
请帮帮忙。