線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1300
推到 Plurk!
推到 Facebook!

从栏位1,2,3获得栏位4,5?

答題得分者是:eaglewolf
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-11 20:03:56 IP:58.100.xxx.xxx 訂閱
如图:
请教各位大大,如何从栏位1,2,3获得栏位4,5?

附加檔案:4a08142c9e70a_1.JPG
編輯記錄
luowy651 重新編輯於 2009-05-11 20:04:44, 註解 無‧
luowy651 重新編輯於 2009-05-11 20:11:06, 註解 無‧
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-05-11 22:44:27 IP:122.116.xxx.xxx 未訂閱
您好,
試一下 ( oracle )
with aaa as (
select '01' fld1, 'a' fld2, 0 fld3 from dual
union
select '09', 'aa', 2 from dual
union
select '0910', 'bb', 3 from dual
union
select '0910001', 'cc', 0 from dual
union
select '0910002', 'dd', 0 from dual
union
select '10', 'ee', 0 from dual
)
select aa.fld1, aa.fld2, aa.fld3, bb.fld4, bb.fld5
from aaa aa, (
select a.fld1, b.fld1 fld4, b.fld2 fld5
from aaa a, (select * from aaa where fld3>0) b
where substr(a.fld1, 1, length(a.fld1)-b.fld3)=b.fld1
) bb
where aa.fld1=bb.fld1( )

其他 db 應該是(假設 table aaa 已存在)
select aa.fld1, aa.fld2, aa.fld3, bb.fld4, bb.fld5
from aaa aa, left join (
select a.fld1, b.fld1 fld4, b.fld2 fld5
from aaa a, (select * from aaa where fld3>0) b
where substr(a.fld1, 1, length(a.fld1)-b.fld3)=b.fld1
) bb
on aa.fld1=bb.fld1
order by aa.fld1

========================================
您也可以用 oracle "connect by" 或 oracle bom 展開
去search, 應該可以找到其他解法
( mssql 好像也有 connect by )
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-05-11 22:45:07, 註解 無‧
st33chen 重新編輯於 2009-05-11 22:45:42, 註解 無‧
st33chen 重新編輯於 2009-05-11 22:46:43, 註解 無‧
st33chen 重新編輯於 2009-05-11 22:54:50, 註解 無‧
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-11 23:59:55 IP:58.100.xxx.xxx 訂閱
谢谢st33chen大大,我用的是mssql,但我用
SELECT aa.fld1, aa.fld2, aa.fld3, bb.fld4, bb.fld5
FROM aaa aa LEFT OUTER JOIN
(SELECT a.fld1, b.fld1 fld4, b.fld2 fld5
FROM aaa a,
(SELECT *
FROM aaa
WHERE fld3 > 0) b
WHERE substring(a.fld1, 1, length(a.fld1) - b.fld3) = b.fld1) bb ON
aa.fld1 = bb.fld1
ORDER BY aa.fld1

时,会显示length和substring的错误资讯,不知为何?
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-05-12 08:30:08 IP:122.116.xxx.xxx 未訂閱
查了一下,
mssql string functions 用
len 而非 length
substring 而非 substr
您說 length 和 substring 都錯
length 錯沒問題, 但 substring 錯會不會是因為 length 錯所引起
我 mssql 不熟, 請自行試一下, 不然就要請高手協助了

------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-05-12 09:34:34 IP:211.75.xxx.xxx 訂閱
增加一個條件式即可
SELECT aa.fld1, aa.fld2, aa.fld3, bb.fld4, bb.fld5
FROM aaa aa LEFT OUTER JOIN
(SELECT a.fld1, b.fld1 fld4, b.fld2 fld5
FROM aaa a,
(SELECT *
FROM aaa
WHERE fld3 > 0) b
WHERE len(a.fld1) > b.fld3 and substring(a.fld1, 1, len(a.fld1) - b.fld3) = b.fld1) bb ON
aa.fld1 = bb.fld1
ORDER BY aa.fld1
===================引 用 st33chen 文 章===================
查了一下,
mssql string functions 用
len 而非 length
substring 而非 substr
您說 length 和 substring 都錯
length 錯沒問題, 但 substring 錯會不會是因為 length 錯所引起
我 mssql 不熟, 請自行試一下, 不然就要請高手協助了

------
先查HELP
再查GOOGLE
最後才發問

沒人有義務替你解答問題
在標題或文章中標明很急
並不會增加網友回答速度

Developing Tool:
1.Delphi 6
2.Visual Studio 2005
3.Visual Studio 2008
DBMS:
MS-SQL
編輯記錄
eaglewolf 重新編輯於 2009-05-12 09:35:41, 註解 無‧
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-05-12 12:19:10 IP:122.235.xxx.xxx 訂閱
多谢st33chen和eaglewolf两位大大!

另: eaglewolf大大的方法倒是没有错误资讯出现,但是fld4中只出现09这一条,没有出现如图中所示的两个0901.
不知有没有办法了
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-05-12 14:15:28 IP:211.75.xxx.xxx 訂閱
經測試後是正確的喔
確認一下你實際資料跟提供的是否相同

------
先查HELP
再查GOOGLE
最後才發問

沒人有義務替你解答問題
在標題或文章中標明很急
並不會增加網友回答速度

Developing Tool:
1.Delphi 6
2.Visual Studio 2005
3.Visual Studio 2008
DBMS:
MS-SQL
編輯記錄
eaglewolf 重新編輯於 2009-05-12 14:20:26, 註解 沒圖沒真像‧
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-05-12 14:24:16 IP:122.116.xxx.xxx 未訂閱
我在 oracle 中測
不管有沒有加
len(a.fld1) > b.fld3 and
結果都一樣, 而且 fld4 確有 兩列 0910

請再檢查一下
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-05-12 15:44:18 IP:122.235.xxx.xxx 訂閱
已经pass了!
再次感谢st33chen和eaglewolf两位大大的热情相助!小弟实在是非常感激之至!
st33chen提供了源code,eaglewolf大大完善了code,可是只有一分,让我很为难!不过st33chen分数那么高,我这次就把分给eaglewolf大大了
再次感谢!特别是st33chen大大,以前给过我很多的帮助!
系統時間:2024-03-29 0:03:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!