2016-09-12 226 views
1

我有一個名爲HMS_PGHL8_HQID_MAP_DEMO的表和名爲UDMTOOL_STG的數據庫。TeraData查詢從表中獲取最小值和最大值

下面的查詢獲取我reuired值。

SELECT udm_main.RECORD_ID AS record_id ,udm_main.HMS_PGH_NODE_ID AS hms_pgh_node_id, 
     udm_main.HMS_PGH_NODE_NAME AS hms_pgh_node_name ,udm_main.HQ_NODE_ID AS hq_node_id, udm_main.HQ_NODE_NAME AS hq_node_name, 
     udm_main.NODE_TYPE_IND as node_type_ind,UPDATED_ON,UPDATED_BY, 
     INSERT_TS FROM UDMTOOL_STG.HMS_PGHL8_HQID_MAP_DEMO udm_main 
WHERE op_code <> 'D' OR op_code IS NULL 
ORDER BY RECORD_ID,HMS_PGH_NODE_ID,HQ_NODE_ID 
GROUP BY 1,2,3,4,5,6,7,8,9; 

現在我需要得到總的行值,其:

  1. 記錄ID分鐘
  2. 記錄ID爲max

請注意,下面不工作,

SELECT MIN(udm_main.RECORD_ID AS) record_id ,udm_main.HMS_PGH_NODE_ID AS hms_pgh_node_id, 
      udm_main.HMS_PGH_NODE_NAME AS hms_pgh_node_name ,udm_main.HQ_NODE_ID AS hq_node_id, udm_main.HQ_NODE_NAME AS hq_node_name, 
      udm_main.NODE_TYPE_IND as node_type_ind,UPDATED_ON,UPDATED_BY, 
      INSERT_TS FROM UDMTOOL_STG.HMS_PGHL8_HQID_MAP_DEMO udm_main 
    WHERE op_code <> 'D' OR op_code IS NULL 
    ORDER BY RECORD_ID,HMS_PGH_NODE_ID,HQ_NODE_ID 
    GROUP BY 1,2,3,4,5,6,7,8,9; 

請求y我們幫助解決問題。

+0

當您的查詢看起來像Teradata SQL時,爲什麼要標記'mysql'? – dnoeth

+1

我不明白你的要求,你想得到只有兩行的結果?用最小和最大'record_id'? – dnoeth

+0

是的..我只需要2行...所以我需要兩個查詢 –

回答

3

您可以使用QUALIFY過濾MIN/MAX:

SELECT udm_main.RECORD_ID,udm_main.HMS_PGH_NODE_ID AS hms_pgh_node_id, 
     udm_main.HMS_PGH_NODE_NAME AS hms_pgh_node_name,udm_main.HQ_NODE_ID AS hq_node_id, udm_main.HQ_NODE_NAME AS hq_node_name, 
     udm_main.NODE_TYPE_IND as node_type_ind,UPDATED_ON,UPDATED_BY, 
     INSERT_TS 
FROM UDMTOOL_STG.HMS_PGHL8_HQID_MAP_DEMO udm_main 
WHERE op_code <> 'D' OR op_code IS NULL 
GROUP BY 1,2,3,4,5,6,7,8,9 
QUALIFY udm_main.RECORD_ID = MIN(udm_main.RECORD_ID) OVER() 
    OR udm_main.RECORD_ID = MAX(udm_main.RECORD_ID) OVER() 
ORDER BY RECORD_ID 

;

+0

你是genious !!謝謝噸..這工程@dnoeth –

相關問題