[英]select distinct but return other columns using ORACLE
我試圖在“ URL”字段上做一個不同的選擇,同時為其他幾個字段提取數據。 我嘗試了下面的方法,但是它給了我一些錯誤信息“缺少表達式”。 我正在使用ORACLE。 誰能幫我
SELECT distinct on url,
is_aw_grp_id,
is_aw_page_id,
eppcm_contentid
FROM ps_z_google_srch
WHERE url <> ' '
AND EPPCM_CONT_TYPE = 'H'
AND TO_CHAR (dttm_imported, 'dd-MON-yyyy HH:MM:SS') >=
(SELECT TO_CHAR (LASTCHANGEDTTM, 'dd-MON-yyyy HH:MM:SS')
FROM PS_Z_CONT_LAST_CHG
WHERE RECNAME = 'Z_GOOGLE_SRCH')
“ on”是一個關鍵字,正在引發此錯誤; 這使解析器感到困惑。 它並不需要或有效的distinct
在甲骨文 (我相信這是一個針對PostgreSQL,所以也許其他數據庫也是如此),所以刪除這個詞:
SELECT distinct url,
is_aw_grp_id,
is_aw_page_id,
eppcm_contentid
...
這將獲得這四個字段的所有不同組合 。 假設您的網址出現在多行中,如果您只想顯示每個網址一次,則需要確定其他三個字段(從該網址的所有行中)要使用哪個值,這可以通過匯總或解析來完成函數或子查詢,具體取決於數據和要求。
離題,但這看起來很奇怪:
TO_CHAR (dttm_imported, 'dd-MON-yyyy HH:MM:SS') >=
(SELECT TO_CHAR (LASTCHANGEDTTM, 'dd-MON-yyyy HH:MM:SS')
...
您正在將兩個日期轉換為字符串,然后將它們與字符串語義進行比較。 因此,“ 01-MAR-2015”將排在“ 28-FEB-2015”之前,因為字符集中1排在2之前。 如果要以字符串形式進行比較,則它們應采用比較有意義的形式,例如ISO格式。 但是將它們都轉換為字符串毫無意義,只是將它們作為日期進行比較:
dttm_imported >= (SELECT LASTCHANGEDTTM
...
您也可以聯接兩個表,而不是使用子查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.