簡體   English   中英

選擇不同但使用ORACLE返回其他列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM