Re: [SQL ] 不認得外層的 Table欄位名稱
看板Database (資料庫)作者ppanerai (Need Some Time...)時間18年前 (2006/08/21 13:40)推噓0(0推 0噓 0→)留言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
討論串 (同標題文章)
Database 近期熱門文章
PTT數位生活區 即時熱門文章
-4
30