Re: [SQL ] 不認得外層的 Table欄位名稱

看板Database (資料庫)作者 (Need Some Time...)時間18年前 (2006/08/21 13:40), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
有幾個問題要說一下 ※ 引述《Marchino (內獅)》之銘言: : 資料庫為Oracle。 : 有一個EMP_TABLE員工歷史紀錄檔,總筆數10萬筆,EMP_ID為員工ID : 現須逐筆為每個相同員工ID的Record欄加上Count, 只能使用一個SQL Script完成此工作. 應該稱為 SQL Statement : EMP_ID RECORD : A10000 1 : A10000 2 : A10000 3 : A13001 1 : A13001 2 : A15001 1 : :: : : == 以下的statement是不是從哪參考得到的 SELECT ROW_NUMBER() over (partition by EMP_ID order by EMP_ID) AS ID_RECORD, ROWID AS SUB_ROWID FROM EMP_TABLE D WHERE D.EMP_ID = A.EMP_ID 這一句我覺得很怪 ... 用法好像不太對 很想知道是怎麼寫出來的 可以麻煩說一下嗎 ^^ 如果我想得沒錯 你應該是要這樣 UPDATE EMP_TABLE A SET A.RECORD = ( SELECT CNT FROM (SELECT EMP_ID , COUNT(*) CNT FROM EMP_TABLE GROUP BY EMP_ID ) B WHERE B.EMP_ID = A.EMP_ID ) 另外 有一點要特別說明 你的TABLE有個欄位叫 record 這是保留字 設計table時最好避免使用 reserved word : UPDATE EMP_TABLE A : set A.RECORD = ( : SELECT B.ID_RECORD : FROM ( : SELECT ROW_NUMBER() over : (partition by EMP_ID order by EMP_ID) AS ID_RECORD, : ROWID AS SUB_ROWID : FROM EMP_TABLE D : WHERE D.EMP_ID = A.EMP_ID : ) B : WHERE B.SUB_ROWID=A.ROWID : ) : 執行時出現 ORA-00904: "A"."EMP_ID": invalid identifier 的錯誤 : 似乎不認悼~層的 Table欄位名稱, : 是我的語法錯誤嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.145.230.2
文章代碼(AID): #14wKThaT (Database)
文章代碼(AID): #14wKThaT (Database)