如何做直式的運算 |
答題得分者是:st33chen
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
小弟下了一段SQL
SN TIME 1 9:25 2 9:35 3 9:37 4 12:40 . . 9 16:42 想請教該怎麼寫可以寫出間距的時間 也就是 SN 1 的時間 = Edit1.Text - 9:25 = (Edit1.Text 可以讓我隨時改變開始時間) SN 2 的時間 = 9:35 - 9:25 = 10分鐘 SN 3 的時間 = 9:37 - 9:35 = 2分鐘 SN 9 的時間 = 16:42 - Edit2.Text = (Edit2.Text 可以讓我隨時改變結束時間) 最後顯示為 SN TIME NUMBER 1 9:25 ? 2 9:35 10 3 9:37 2 4 12:40 184 . . 9 16:42 ?. 以此類推....
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
HI, 我用 MSSQL 的方式,寫一段您看看,不過目前該 sql 只能用在 SN 是連續的上面,如果不能連續的話,
請自行加上 Row_Number() 的指令來配合 [code sql] Create procedure TimeSpan @sEdit1 varchar(20), @sEdit2 varchar(20) AS BEGIN SELECT IsNull(a.SN, b.SN 1) SN, IsNull(a.Time, @sEdit2) ATime, IsNull(b.Time, @sEdit1) BTime, DateDiff(Minute, IsNull(b.Time, @sEdit1), IsNull(a.Time, @sEdit2)) as MinuteSpan FROM Table a full join Table b on a.SN=(b.SN 1) order by SN END [/code] 那如果您是需要的是在下 SQL Command 時,就能使用的話,也可以直接把上面那段變成 SQLText,如 [code delphi] SQL.Text := 'SELECT IsNull(a.SN, b.SN 1) SN, ' ' IsNull(a.Time, ''' Edit2.Text ''') ATime, ' ' IsNull(b.Time, ''' Edit1.Text ''') BTime, ' ' DateDiff(Minute, IsNull(b.Time, ''' Edit1.Text '''), IsNull(a.Time, ''' Edit2.Text ''')) as MinuteSpan ' 'FROM Table a full join Table b on a.SN=(b.SN 1) order by SN '; [/code] ===================引 用 lovemari 文 章=================== 小弟下了一段SQL SN TIME 1 9:25 2 9:35 3 9:37 4 12:40 . . 9 16:42 想請教該怎麼寫可以寫出間距的時間 也就是 SN 1 的時間 = Edit1.Text - 9:25 = (Edit1.Text 可以讓我隨時改變開始時間) SN 2 的時間 = 9:35 - 9:25 = 10分鐘 SN 3 的時間 = 9:37 - 9:35 = 2分鐘 SN 9 的時間 = 16:42 - Edit2.Text = (Edit2.Text 可以讓我隨時改變結束時間) 最後顯示為 SN TIME NUMBER 1 9:25 ? 2 9:35 10 3 9:37 2 4 12:40 184 . . 9 16:42 ?. 以此類推....
------
價值的展現,來自於你用哪一個角度來看待它!! |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
插花一下
CAREYCHEN 大大的 INSULL 就是 ORACLE 的 NVL, 用法一樣. ======================================================= 2008-12-16 15:00:03 CAREYCHEN 大大您太客氣了, 老漢在您這學得才多呢. ======================================================= 對不起, 我發覺我打錯了 CAREYCHEN 大大的 ISNULL 就是 ORACLE 的 NVL, 用法一樣.
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
先謝謝大大的指點
可小弟的SN 並非連續的 = = 有可能第一筆是 123456 第二筆卻成A840CKF 都很不一定耶 那像這種不連續的序號 有其他方法可做嗎? 像大大提到的 Row_Number() 可以請大大教我該怎麼做嗎? 小弟是小新手 >//< THANKS ... ===================引 用 careychen 文 章=================== HI, 我用 MSSQL 的方式,寫一段您看看,不過目前該 sql 只能用在 SN 是連續的上面,如果不能連續的話, 請自行加上 Row_Number() 的指令來配合 [code sql] Create procedure TimeSpan @sEdit1 varchar(20), @sEdit2 varchar(20) AS BEGIN SELECT IsNull(a.SN, b.SN 1) SN, IsNull(a.Time, @sEdit2) ATime, IsNull(b.Time, @sEdit1) BTime, DateDiff(Minute, IsNull(b.Time, @sEdit1), IsNull(a.Time, @sEdit2)) as MinuteSpan FROM Table a full join Table b on a.SN=(b.SN 1) order by SN END [/code] 那如果您是需要的是在下 SQL Command 時,就能使用的話,也可以直接把上面那段變成 SQLText,如 [code delphi] SQL.Text := 'SELECT IsNull(a.SN, b.SN 1) SN, ' ' IsNull(a.Time, ''' Edit2.Text ''') ATime, ' ' IsNull(b.Time, ''' Edit1.Text ''') BTime, ' ' DateDiff(Minute, IsNull(b.Time, ''' Edit1.Text '''), IsNull(a.Time, ''' Edit2.Text ''')) as MinuteSpan ' 'FROM Table a full join Table b on a.SN=(b.SN 1) order by SN '; [/code] ===================引 用 lovemari 文 章=================== 小弟下了一段SQL SN TIME 1 9:25 2 9:35 3 9:37 4 12:40 . . 9 16:42 想請教該怎麼寫可以寫出間距的時間 也就是 SN 1 的時間 = Edit1.Text - 9:25 = (Edit1.Text 可以讓我隨時改變開始時間) SN 2 的時間 = 9:35 - 9:25 = 10分鐘 SN 3 的時間 = 9:37 - 9:35 = 2分鐘 SN 9 的時間 = 16:42 - Edit2.Text = (Edit2.Text 可以讓我隨時改變結束時間) 最後顯示為 SN TIME NUMBER 1 9:25 ? 2 9:35 10 3 9:37 2 4 12:40 184 . . 9 16:42 ?. 以此類推....
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-12-16 13:56:16, 註解 無‧
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
您用的 Database 是用 Oracle 的嗎? 我這邊先寫 MSSQL 的部份, Oracle 的部份就要請 st33chen 前輩跟您說了
Row_Number() 的用法 這樣的下法就可以讓原本的資料多出一個欄位叫 SN ,而裡面的 Order by 就是指您想要用哪一個欄位來當做 Row_Number() 函數的排序依據 Select Row_Number() over (order by Field) as SN, ............... 所以如果用以下的 SQL 來說明的話,會變成 [code sql] SELECT IsNull(a.SN, b.SN 1) SN, IsNull(a.Time, @sEdit2) ATime, IsNull(b.Time, @sEdit1) BTime, DateDiff(Minute, IsNull(b.Time, @sEdit1), IsNull(a.Time, @sEdit2)) as MinuteSpan FROM (Select Row_Number() over (Order by Time) SN, Time from Table) a full join (Select Row_Number() over (Order by Time) SN, Time from Table) b on a.SN=(b.SN 1) order by SN [/code] 或是更簡明的寫法 ==> 等於是原本一開始跟您說的 Sample 語法上面再加蓋個 With 的東西 (但現在上下兩種效能一樣,只是語法較單純) [code sql] with tmpTable(SN, Time) AS ( Select Row_Number() over (Order by Time), Time from Table ) SELECT IsNull(a.SN, b.SN 1) SN, IsNull(a.Time, @sEdit2) ATime, IsNull(b.Time, @sEdit1) BTime, DateDiff(Minute, IsNull(b.Time, @sEdit1), IsNull(a.Time, @sEdit2)) as MinuteSpan FROM tmpTable a full join tmpTable b on a.SN=(b.SN 1) order by SN [/code]
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-12-16 14:40:35, 註解 刪掉多餘的回文‧
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
剛剛測了一下, CAREYCHEN大大的
SELECT IsNull(a.SN, b.SN 1) SN, IsNull(a.Time, @sEdit2) ATime, IsNull(b.Time, @sEdit1) BTime, DateDiff(Minute, IsNull(b.Time, @sEdit1), IsNull(a.Time, @sEdit2)) as MinuteSpan FROM (Select Row_Number() over (Order by Time) SN, Time from Table) a full join (Select Row_Number() over (Order by Time) SN, Time from Table) b on a.SN=(b.SN 1) order by SN 中, ROW_NUMBER() OVER(....) 這部份在 ORACLE 可以一字不改使用 另外, ORACLE 還有一個內建欄位 ROWNUM 可以用. 其他不改的話, 改這兩句 (Select RowNum SN, Time from Table order by time) a full join (Select RowNum SN, Time from Table order by time) b on a.SN=(b.SN 1) 請參考一下 LO. ===================引 用 careychen 文 章=================== 您用的 Database 是用 Oracle 的嗎? 我這邊先寫 MSSQL 的部份, Oracle 的部份就要請 st33chen 前輩跟您說了 Row_Number() 的用法 這樣的下法就可以讓原本的資料多出一個欄位叫 SN ,而裡面的 Order by 就是指您想要用哪一個欄位來當做 Row_Number() 函數的排序依據 Select Row_Number() over (order by Field) as SN, ............... 所以如果用以下的 SQL 來說明的話,會變成 [code sql] SELECT IsNull(a.SN, b.SN 1) SN, IsNull(a.Time, @sEdit2) ATime, IsNull(b.Time, @sEdit1) BTime, DateDiff(Minute, IsNull(b.Time, @sEdit1), IsNull(a.Time, @sEdit2)) as MinuteSpan FROM (Select Row_Number() over (Order by Time) SN, Time from Table) a full join (Select Row_Number() over (Order by Time) SN, Time from Table) b on a.SN=(b.SN 1) order by SN [/code] 或是更簡明的寫法 ==> 等於是原本一開始跟您說的 Sample 語法上面再加蓋個 With 的東西 (但現在上下兩種效能一樣,只是語法較單純) [code sql] with tmpTable(SN, Time) AS ( Select Row_Number() over (Order by Time), Time from Table ) SELECT IsNull(a.SN, b.SN 1) SN, IsNull(a.Time, @sEdit2) ATime, IsNull(b.Time, @sEdit1) BTime, DateDiff(Minute, IsNull(b.Time, @sEdit1), IsNull(a.Time, @sEdit2)) as MinuteSpan FROM tmpTable a full join tmpTable b on a.SN=(b.SN 1) order by SN [/code]
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-12-16 15:22:05, 註解 無‧
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
DEAR careychen st33chen
小弟有幾各地方不明白 1.SELECT IsNull(a.SN, b.SN 1) SN, <-- SN 是指我原有TABLE的SN 還是ROW_NUMBER 跑出來的排序呢?? 2.大大後來補充的非連續序號作法...能否提供SQL作法? 目前手中無DELPHI 測試....真不好意思 3.以下欄位SEQ,SERIAL_NUMBER,REPAIR_TIME [code delphi] SELECT ROW_NUMBER() OVER (ORDER BY REPAIR_TIME) AS SEQ, SERIAL_NUMBER,REPAIR_TIME FROM G_SN_REPAIR [/code] 我是有想過一種做法不知道可不可行 排兩次序 第一次排序是1,2,3,4 序號A , B, C, D 第二次是 0 ,1,2,3 序號A , B, C, D 然後利用排序相等的方式 1=1 B-A 去算 只是做到這邊我不知道該怎麼做1=1 B-A
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-12-19 11:55:10, 註解 無‧
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
1.SELECT IsNull(a.SN, b.SN+1) SN, <-- SN 是指我原有TABLE的SN 還是ROW_NUMBER 跑出來的排序呢??
ROW_NUMBER 2.大大後來補充的非連續序號作法...能否提供SQL作法? 目前手中無DELPHI 測試....真不好意思 其實也是把上面那段改成 SQL 字串的方式,在一開始回您的時候就有Sample 了,還是自己手動試試吧 3.以下欄位SEQ,SERIAL_NUMBER,REPAIR_TIME [code delphi] SELECT ROW_NUMBER() OVER (ORDER BY REPAIR_TIME) AS SEQ, SERIAL_NUMBER,REPAIR_TIME FROM G_SN_REPAIR [/code] 我是有想過一種做法不知道可不可行 排兩次序 第一次排序是1,2,3,4 序號A , B, C, D 第二次是 0 ,1,2,3 序號A , B, C, D 然後利用排序相等的方式 1=1 B-A 去算 只是做到這邊我不知道該怎麼做1=1 B-A 寫給您的 Sample 就是這種寫法,多看幾遍,您就知道了!!
------
價值的展現,來自於你用哪一個角度來看待它!! |
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
DEAR careychen , st33chen 兩位大大
小弟研究了改寫之後,大致上已經可以跑但還是有小問題 1.跑這各函數 DateDiff 都會顯示錯誤 所以小弟就把這項刪掉 2.我已經針對NULL值去填時間了 也就是早上8:00跟下午17:00 (Edit1,Edit2) 但是去做相減...但是第一筆跟最後一筆卻沒有相減的時間 (附圖http://delphi.ktop.com.tw/board.php?cid=31&fid=130&tid=96620) 3.實際序號只有五筆 可是我跑出來下來又多出一樣的五筆= = 以下是我SQL [code delphi] SELECT A.SEQ,A.SERIAL_NUMBER, NVL(A.REPAIR_TIME,TO_DATE('200812181700','YYYYMMDDHH24MI')) "REPAIR_TIME", B.SEQ2,B.SERIAL_NUMBER "SERIAL_NUMBER2", NVL(B.REPAIR_TIME,TO_DATE('200812180800','YYYYMMDDHHMI')) "REPAIR_TIME2", TRUNC((A.REPAIR_TIME - B.REPAIR_TIME)*1440,2) "TIME" FROM (Select Row_Number() over (Order by REPAIR_TIME) SEQ, SERIAL_NUMBER,REPAIR_TIME from G_SN_REPAIR WHERE RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD') = '20081218' AND REPAIR_EMP_ID = '10000109') A full join (Select Row_Number() over (Order by REPAIR_TIME) SEQ2,SERIAL_NUMBER,REPAIR_TIME from G_SN_REPAIR WHERE RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD') = '20081218' AND REPAIR_EMP_ID = '10000109') B on A.SEQ=(B.SEQ2 1) ORDER BY A.SEQ [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
這個部份我剛在 MSSQL 試過一樣的語法是正確的,但…在 Oracle 上卻多出五筆,這部份要請 st33chen 前輩幫您試試了,我這邊沒有 Oracle 的環境,抱歉
===================引 用 lovemari 文 章=================== DEAR careychen , st33chen 兩位大大 小弟研究了改寫之後,大致上已經可以跑但還是有小問題 1.跑這各函數 DateDiff 都會顯示錯誤 所以小弟就把這項刪掉 2.我已經針對NULL值去填時間了 也就是早上8:00跟下午17:00 (Edit1,Edit2) 但是去做相減...但是第一筆跟最後一筆卻沒有相減的時間 (附圖http://delphi.ktop.com.tw/board.php?cid=31&fid=130&tid=96620) 3.實際序號只有五筆 可是我跑出來下來又多出一樣的五筆= = 以下是我SQL [code delphi] SELECT A.SEQ,A.SERIAL_NUMBER, NVL(A.REPAIR_TIME,TO_DATE('200812181700','YYYYMMDDHH24MI')) "REPAIR_TIME", B.SEQ2,B.SERIAL_NUMBER "SERIAL_NUMBER2", NVL(B.REPAIR_TIME,TO_DATE('200812180800','YYYYMMDDHHMI')) "REPAIR_TIME2", TRUNC((A.REPAIR_TIME - B.REPAIR_TIME)*1440,2) "TIME" FROM (Select Row_Number() over (Order by REPAIR_TIME) SEQ, SERIAL_NUMBER,REPAIR_TIME from G_SN_REPAIR WHERE RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD') = '20081218' AND REPAIR_EMP_ID = '10000109') A full join (Select Row_Number() over (Order by REPAIR_TIME) SEQ2,SERIAL_NUMBER,REPAIR_TIME from G_SN_REPAIR WHERE RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD') = '20081218' AND REPAIR_EMP_ID = '10000109') B on A.SEQ=(B.SEQ2 1) ORDER BY A.SEQ [/code]
------
價值的展現,來自於你用哪一個角度來看待它!! |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您們好,
我建了 TABLE 實測, 的確會多出幾筆資料, GOOGLE 了一下(我是用 ORACLE FULL JOIN 搜尋的), 發覺應該是 ORACLE 對 FULL JOIN 的定義不符合 SQL 標準, 所以就有人說這是 ORACLE 的 BUG. 我試了一些方法想保留 FULL JOIN 尚不得其門, 所以您的 SQL 指令我改了一下, 我實測可行, 請參考一下: (我測試時 REPAIR_TIME 是用文字型, 語法和這裡有些不一樣, COPY 到這裡時不知是否改全了, 請注意一下) select A.SEQ, A.SERIAL_NUMBER, A.REPAIR_TIME "REPAIR_TIME", -- 改成用 UNION ALL B.SEQ2, B.SERIAL_NUMBER "SERIAL_NUMBER2", B.REPAIR_TIME "REPAIR_TIME2", -- 改成用 UNION ALL TRUNC((A.REPAIR_TIME - B.REPAIR_TIME)*1440, 2) "TIME" FROM ( select Row_Number() over (order by REPAIR_TIME) SEQ, SERIAL_NUMBER, REPAIR_TIME from G_SN_REPAIR where RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD')='20081218' AND REPAIR_EMP_ID='10000109' UNION ALL -- 代替原本的 NVL SELECT COUNT(*) 1, 'XX', '200812181700' FROM G_SN_REPAIR where RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD')='20081218' AND REPAIR_EMP_ID='10000109' ) A, ( -- 代替原本的 FULL JOIN select Row_Number() over (order by REPAIR_TIME) SEQ2, SERIAL_NUMBER, REPAIR_TIME from G_SN_REPAIR where RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD')='20081218' AND REPAIR_EMP_ID='10000109' UNION ALL -- 代替原本的 NVL SELECT 0, 'XX', '200812180800' FROM DUAL ) B WHERE A.SEQ=(B.SEQ2 1) -- 代替原本的 ON order by A.SEQ
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-12-23 10:43:22, 註解 無‧
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
謝謝 st33chen 大大
你提出的SQL 我試跑已經不會出現重複的了 只是一開始跑的時候 REPAIR_TIME 像大大說的資料格式不對 修改成下面即可 但是我無法做運算了 是我那裡改的不對嗎?? 我的A.REPAIR_TIME 沒有此ID 我改成 跟下面TO_CHAR(REPAIR_TIME,'YYYYMMDD') 也不能執行>//< [code delphi] select A.SEQ, A.SERIAL_NUMBER, //A.REPAIR_TIME "REPAIR_TIME", -- 改成用 UNION ALL //A.REPAIR_TIME, B.SEQ2, B.SERIAL_NUMBER "SERIAL_NUMBER2" //B.REPAIR_TIME "REPAIR_TIME2" -- 改成用 UNION ALL //B.REPAIR_TIME //TRUNC((A.REPAIR_TIME - B.REPAIR_TIME)*1440, 2) "TIME" FROM ( select Row_Number() over (order by REPAIR_TIME) SEQ, SERIAL_NUMBER, TO_CHAR(REPAIR_TIME,'YYYYMMDD') from G_SN_REPAIR where RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD')='20081218' AND REPAIR_EMP_ID='10000109' UNION ALL // 代替原本的 NVL SELECT COUNT(*) 1, 'XX', '200812181700' FROM G_SN_REPAIR where RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD')='20081218' AND REPAIR_EMP_ID='10000109' ) A, ( //代替原本的 FULL JOIN select Row_Number() over (order by REPAIR_TIME) SEQ2, SERIAL_NUMBER, TO_CHAR(REPAIR_TIME,'YYYYMMDD') from G_SN_REPAIR where RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD')='20081218' AND REPAIR_EMP_ID='10000109' UNION ALL // 代替原本的 NVL SELECT 0, 'XX', '200812180800' FROM DUAL ) B WHERE A.SEQ=(B.SEQ2 1) // 代替原本的 ON order by A.SEQ [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-12-25 15:30:09, 註解 無‧
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
因為我不習慣用 DATETIME 型, 測試時用字串型,
上傳 SQL 時果真疏忽沒改到, SORRY LA, 重傳一次, (因為測試用的 TABLE 已刪除, 我沒再實測), 希望這回對了. 現在是假設 SERIAL_NUMBER 為字串型, REPAIR_TIME 為 DATETIME 型 因為 UNION ALL 欄位數要一樣, 且相對應的欄位型態要一致, 如果還不對, 您應該可以自行排除. select A.SEQ, A.SERIAL_NUMBER, A.REPAIR_TIME "REPAIR_TIME" B.SEQ2, B.SERIAL_NUMBER "SERIAL_NUMBER2", B.REPAIR_TIME "REPAIR_TIME2", TRUNC((A.REPAIR_TIME - B.REPAIR_TIME)*1440, 2) "TIME" FROM ( select Row_Number() over (order by REPAIR_TIME) SEQ, SERIAL_NUMBER, REPAIR_TIME from G_SN_REPAIR where RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD')='20081218' AND REPAIR_EMP_ID='10000109' UNION ALL SELECT COUNT(*) 1, 'XX', TO_DATE('200812181700','YYYYMMDDHH24MI') FROM G_SN_REPAIR where RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD')='20081218' AND REPAIR_EMP_ID='10000109' ) A, ( select Row_Number() over (order by REPAIR_TIME) SEQ2, SERIAL_NUMBER, REPAIR_TIME from G_SN_REPAIR where RP_STAGE_ID = '10015' AND TO_CHAR(REPAIR_TIME,'YYYYMMDD')='20081218' AND REPAIR_EMP_ID='10000109' UNION ALL SELECT 0, 'XX', TO_DATE('200812180800', 'YYYYMMDDHH24MI') FROM DUAL ) B WHERE A.SEQ=(B.SEQ2 1) order by A.SEQ
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |