當用戶選擇查看最近記錄的選項時,我有要求顯示最新記錄。我有3個不同的表格,我可以從中獲取數據並顯示在屏幕上。僅顯示最近記錄
下面是創建的示例表。
Create table one(sealID integer,product_ser_num varchar2(20),create_time timestamp,status varchar2(10));
create table two(transID integer,formatID integer, formatStatus varchar,ctimeStamp timestamp,sealID integer);
create table three(transID integer,fieldStatus varchar,fieldValue varchar,exctype varchar);
我加入了3個表格,並在單個屏幕上顯示結果。我想根據時間戳顯示最近的記錄。 請從3個不同的表中找到屏幕上的樣本數據。
ProductSerialNumber formatID formatStatus fieldStatus TimeStamp
ASD100 100 P P 2015-09-03 10:30:22
ASD100 200 p P 2015-09-03 10:30:22
ASD100 100 p P 2015-09-03 10:22:11
ASD100 200 p P 2015-09-03 10:22:11
我想顯示由以上顯示錶,應該返回前兩排,因爲他們最近的記錄時與時間戳列檢查最近的記錄。
請建議對下列查詢進行哪些更改才能顯示最近的記錄。
SELECT transId,product_ser_num,status, to_char(timestamp, 'yyyy-mm-dd hh24:mi:ss') timestamp,
cnt
FROM (SELECT one.*,
row_number() over(ORDER BY
CASE
WHEN :orderDirection like '%asc%' THEN
CASE
WHEN :orderBy='product_ser_num' THEN product_ser_num,
WHEN :orderBy='status' THEN status
WHEN :orderBy='timestamp' THEN to_char(timestamp, 'yyyy-mm-dd hh24:mi:ss')
ELSE to_char(timestamp, 'yyyy-mm-dd hh24:mi:ss')
END
END ASC,
CASE
WHEN :orderDirection like '%desc%' THEN
CASE
WHEN :orderBy='product_ser_num' THEN product_ser_num,
WHEN :orderBy='status' THEN status
WHEN :orderBy='timestamp' THEN to_char(timestamp, 'yyyy-mm-dd hh24:mi:ss')
ELSE to_char(timestamp, 'yyyy-mm-dd hh24:mi:ss')
END
END DESC , transId ASC) line_number
FROM (select one_inner.*, COUNT(1) OVER() cnt
from (select two_tran.transaction_id,
one_res.product_serial_number productSerialNumber,
one_res.status status,from one one_res
left outer join two two_trans on two_trans.sealID = one_res.sealID
left outer join three three_flds on two_tran.transID = three_flds.transID and (three_flds.fieldStatus = 'P')
始終將您的Oracle數據庫版本發佈至4位小數位。並請張貼樣本數據,不要張貼圖片,它根本沒有幫助。請發佈創建和插入語句,併發布所需的輸出。 –
oracle10g是使用的版本。當我看到圖像時,我想它會給出清晰的表格結構圖。要求是顯示最近的記錄。 @lalith kumar B – scrit
很難看到圖像,也不可能從圖像中複製文本。您可以準備[SQL小提琴](http://sqlfiddle.com/)或在問題中發佈創建和插入語句。 –