가능한 중복 : 제가의 별명을 사용할 수 아니에요 이유를 알려 주시기 바랍니다
Using an Alias in a WHERE clauseSQL .. 별칭 이름 WHERE 조건
경우 쿼리에 대한 조건 아래에 있습니다 ..에
SELECT * FROM (
SELECT USER_NAME AS "User ID",
OLD_VALUE_STRING as "Status",
NVL(lag(ENTRY_DATE) over (partition by user_name order by ENTRY_DATE), trunc(Sysdate-1)) as "Begin",
ENTRY_DATE as "End"
FROM (SELECT U.USER_NAME,
U.FULL_NAME,
UH.OLD_VALUE_STRING,
UH.NEW_VALUE_STRING,
UH.ENTRY_DATE,
US.IS_WORKING
FROM VIW.USER_HISTORY UH, VIW.USERS U, VIW.USER_STATUS US
WHERE U.ID = UH.USER_ID
AND UH.EVENT_ID = VIW.EVENT_PKG.GET_ID('UPD_USR_STATUS')
AND UH.NEW_VALUE_STRING = US.ABBREVIATION
AND UH.ENTRY_DATE >= TO_DATE('01082013', 'MMDDYYYY')
AND UH.ENTRY_DATE <= TO_DATE('01092013', 'MMDDYYYY')
ORDER BY U.USER_NAME, UH.ENTRY_DATE)
UNION
SELECT USER_NAME AS "User ID",
NEW_VALUE_STRING as "Status",
ENTRY_DATE AS "Begin",
lead(ENTRY_DATE) over (partition by user_name order by ENTRY_DATE) as "End"
FROM (SELECT U.USER_NAME,
U.FULL_NAME,
UH.OLD_VALUE_STRING,
UH.NEW_VALUE_STRING,
UH.ENTRY_DATE,
US.IS_WORKING
FROM VIW.USER_HISTORY UH, VIW.USERS U, VIW.USER_STATUS US
WHERE U.ID = UH.USER_ID
AND UH.EVENT_ID = VIW.EVENT_PKG.GET_ID('UPD_USR_STATUS')
AND UH.NEW_VALUE_STRING = US.ABBREVIATION
AND UH.ENTRY_DATE >= TO_DATE('01082013', 'MMDDYYYY')
AND UH.ENTRY_DATE <= TO_DATE('01092013', 'MMDDYYYY')
ORDER BY U.USER_NAME, UH.ENTRY_DATE)
) as innerTable
WHERE Status <>'LOGGED_OUT'
ORDER BY 1,3
SQL이 할 수있는 것이 아니기 때문에 ... 문서를 읽으십시오. –
+1 @ JordanKaye '사례'를 사용할 수 있습니다 ... 여기에서 다른 [관련 게시물] (http://stackoverflow.com/questions/356675/using-an-alias-in-a-where-clause) – bonCodigo
'innerTable.NEW_VALUE_STRING <> 'LOGGED_OUT''을 사용할 수없는 이유는 무엇입니까? (아니면 그냥 잘못 읽었습니까?) – Popnoodles