簡體   English   中英

轉置 postgresql 中的列 - 橫向連接?

[英]Transpose columns in postgresql - lateral join?

我正在嘗試在 postgresql 中轉置幾列。

從這個數據格式:

交易編號 | 交易名稱 | 創建日期 | Lead_date_pipeline_ | warm_lead_date_pipeline_ | d.meeting_1_date_pipeline_ | d.final_meeting_date_pipeline_ | d.contract_sent_date_pipeline_ | d.closed_won_date_pipeline_ 等。

我想轉置除交易名稱和交易 ID 之外的所有列,並獲得 2 個新列(包含所有階段的管道階段:領導、溫暖的領導、會議 1、最終會議等;以及日期),如下所示:

交易編號 | 交易名稱 | 管道階段| 數據

我能夠使用以下代碼做到這一點:

SELECT d."deal id", d."deal name", v.*
FROM   gg_deals d
     , LATERAL (
   VALUES
      ('create date', d."create date")
    , ('lead_date_pipeline_', d.lead_date_pipeline_)
    , ('warm_lead_date_pipeline_', d.warm_lead_date_pipeline_)
    , ('meeting_1_date_pipeline_', d.meeting_1_date_pipeline_)
    , ('final_meeting_date_pipeline_', d.final_meeting_date_pipeline_)
    , ('contract_sent_date_pipeline_', d.contract_sent_date_pipeline_)
    , ('closed_won_date_pipeline_', d.closed_won_date_pipeline_)
    , ('closed_lost_date_pipeline_', d.closed_lost_date_pipeline_)
   ) v (Pipeline_stage, Date)

但是,當我們將數據移至 redshift 時,此查詢不再有效並出現此錯誤

SQL Error [500310] [42883]: [Amazon](500310) Invalid operation: function values("unknown", timestamp without time zone) does not exist;

我怎樣才能解決這個問題? 我不明白問題出在哪里

一個典型的解決方法是使用union all

select deal_id, deal_name, 'create date' as pipeline_stage "create date" as date from gg_deals
union all select deal_id, deal_name, 'lead_date_pipeline_', d.lead_date_pipeline_ from gg_deals
union all select deal_id, deal_name, 'warm_lead_date_pipeline_', d.warm_lead_date_pipeline_ from gg_deals
union all select deal_id, deal_name, 'meeting_1_date_pipeline_', d.meeting_1_date_pipeline_ from gg_deals
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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