snowflake-cloud-data-platform - 为雪花中多个枢轴具有相同名称的列写别名

标签 snowflake-cloud-data-platform snowflake-schema

我的查询是

SELECT *

FROM  (

WITH as1 AS (
SELECT
    DISTINCT a.COMPANY_NAME,
    b.industry_sector,
    b.INDUSTRY_GROUP,
    c.VERTICAL,
    D.VCROUND,
    D.VCROUND AS VCROUND1,
    D.VCROUND AS VCROUND2,
    D.VCROUND AS VCROUND3,
    D.VCROUND AS VCROUND4,
    D.Deal_date,
    e.EMPLOYEE_COUNT ,
    a.REVENUE,
    a.TOTALRAISED ,
    D.Premoney_Valuation
FROM
    DAT.PIK.PB_C a
LEFT JOIN D.PIT.PB_COMPANY_INDUS b ON
    a.C_ID = b.C_ID
LEFT JOIN D.P.PB_COMPANY_V c ON
    c.C_ID = b.C_ID
    AND a.C_ID = c.C_ID
LEFT JOIN DA.PIT.PB_DEAL D ON
    D.C_ID = c.C_ID
    AND D.c_id = b.c_id
    AND D.C_ID = a.c_id
LEFT JOIN DA.PITCHBOOK.PB_COMP e ON
    e.C_ID = D.C_ID
    AND e.C_ID = c.C_ID
    AND e.C_ID = b.C_ID
    AND e.C_ID = a.C_ID
     where a.COMPANY_NAME ='11Sight'
                                
)
                                
SELECT
    *
FROM
    as1
    pivot(sum(TOTALRAISED) FOR VCROUND IN ('Angel', '1st Round', '2nd Round', '3rd Round', '4th Round', '5th Round')) AS p (
                                                                                                COMPANY_NAME,industry_sector,INDUSTRY_GROUP,VERTICAL,Angel_EmployeeCount,
                                                                                                R1_EmployeeCount,R2_EmployeeCount,R3_EmployeeCount,
                                                                                                R4_EmployeeCount,R5_EmployeeCount)
     pivot(sum(EMPLOYEE_COUNT) FOR VCROUND1 IN ('Angel', '1st Round', '2nd Round', '3rd Round', '4th Round', '5th Round')) 
     AS q 
    

     
    ).

我得到'天使','第一轮','第二轮','第三轮','第四轮','第五轮',。能否请您告诉我如何区分从顶部枢轴到底部枢轴的列,这给出了相同的列。

最佳答案

所以通过这个精简的 SQL 和 fake_data:

WITH fake_data AS (
    SELECT *, VCROUND AS VCROUND1 FROM VALUES
        ('comp1', 'ind_1', 'group_1', 'virt_1', 'Angel', 1, 1000),
        ('comp1', 'ind_1', 'group_1', 'virt_1', '1st Round', 10, 100000),
        ('comp1', 'ind_1', 'group_1', 'virt_1', '2nd Round', 11, 200000),
        ('comp1', 'ind_1', 'group_1', 'virt_1', '3rd Round', 12, 300000)
        v(COMPANY_NAME, industry_sector, INDUSTRY_GROUP, VERTICAL, VCROUND, EMPLOYEE_COUNT, TOTALRAISED)
)                            
SELECT *
FROM fake_data fd
    pivot(sum(TOTALRAISED) FOR VCROUND IN ('Angel', '1st Round', '2nd Round', '3rd Round')) AS p 
    (
        COMPANY_NAME,
        industry_sector,
        INDUSTRY_GROUP,
        VERTICAL,
        Angel_EmployeeCount,
        R1_EmployeeCount,
        R2_EmployeeCount,
        R3_EmployeeCount,
        R4_EmployeeCount,
        R5_EmployeeCount
    )
    pivot(sum(EMPLOYEE_COUNT) FOR VCROUND1 IN ('Angel', '1st Round', '2nd Round', '3rd Round')) 
     AS q ;

我得到:

<表类="s-表"> <头> COMPANY_NAME INDUSTRY_SECTOR INDUSTRY_GROUP 垂直 “‘天使’” “‘第一轮’” “‘第二轮’” “‘第三轮’” '天使' '第一轮' '第二轮' '第三轮' <正文> comp1 ind_1 组_1 virt_1 1,000 1 comp1 ind_1 组_1 virt_1 100,000 10 comp1 ind_1 组_1 virt_1 200,000 11 comp1 ind_1 组_1 virt_1 30万 12

所以同意这令人困惑..

因此远离 PIVOT,因为它没有增加值(value),让我们手写如下:

WITH fake_data AS (
    SELECT * FROM VALUES
        ('comp1', 'ind_1', 'group_1', 'virt_1', 'Angel', 1, 1000),
        ('comp1', 'ind_1', 'group_1', 'virt_1', '1st Round', 10, 100000),
        ('comp1', 'ind_1', 'group_1', 'virt_1', '2nd Round', 11, 200000),
        ('comp1', 'ind_1', 'group_1', 'virt_1', '3rd Round', 12, 300000)
        v(company_name, industry_sector, industry_group, vertical, vcround, employee_count, totalraised)
)  
SELECT 
    company_name,
    industry_sector,
    industry_group,
    vertical,
    SUM(IFF(vcround='Angel', totalraised, null)) AS angel_totalraised,
    SUM(IFF(vcround='1st Round', totalraised, null)) AS r1_totalraised,
    SUM(IFF(vcround='2nd Round', totalraised, null)) AS r2_totalraised,
    SUM(IFF(vcround='3rd Round', totalraised, null)) AS r3_totalraised,

    SUM(IFF(vcround='Angel', EMPLOYEE_COUNT, null)) AS angel_employeecount,
    SUM(IFF(vcround='1st Round', EMPLOYEE_COUNT, null)) AS r1_employeecount,
    SUM(IFF(vcround='2nd Round', EMPLOYEE_COUNT, null)) AS r2_employeecount,
    SUM(IFF(vcround='3rd Round', EMPLOYEE_COUNT, null)) AS r3_employeecount
FROM fake_data
GROUP BY 1,2,3,4;

给出:

<表类="s-表"> <头> COMPANY_NAME INDUSTRY_SECTOR INDUSTRY_GROUP 垂直 “‘天使’” “‘第一轮’” “‘第二轮’” “‘第三轮’” '天使' '第一轮' '第二轮' '第三轮' <正文> comp1 ind_1 组_1 virt_1 1,000 100,000 200,000 30万 1 10 11 12

我认为您正在寻找的更多内容。

关于snowflake-cloud-data-platform - 为雪花中多个枢轴具有相同名称的列写别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70780914/

相关文章:

snowflake-cloud-data-platform - Snowflake 存储过程中的最大 JavaScript 字符串大小

sql-server-2008-r2 - Snowflake sql - 横向展平函数与 sql server 的比较 - Split_String()

snowflake-cloud-data-platform - 如何在雪花数据库中安排每日sql脚本

sql - 如何将拉丁数据插入雪花表

snowflake-cloud-data-platform - 雪花缓存

SQL 查找存在特定值的所有表和字段

snowflake-cloud-data-platform - clusterring key 是否会影响雪花中的负载性能

snowflake-cloud-data-platform - 基于另一个表中范围的基于窗口的平均值

sql - COPY INTO <table> in snowflake throws 表不存在

snowflake-cloud-data-platform - 雪花: what is the APPADMIN role?