从栏位1,2,3获得栏位4,5? |
答題得分者是:eaglewolf
|
luowy651
高階會員 發表:257 回覆:313 積分:114 註冊:2003-04-09 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
試一下 ( 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 (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
luowy651
高階會員 發表:257 回覆:313 積分:114 註冊:2003-04-09 發送簡訊給我 |
谢谢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 發送簡訊給我 |
查了一下,
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 發送簡訊給我 |
增加一個條件式即可
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 發送簡訊給我 |
|
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
|
luowy651
高階會員 發表:257 回覆:313 積分:114 註冊:2003-04-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |