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