Time Can';无法正确检索上一季度的上一次不同计数

Time Can';无法正确检索上一季度的上一次不同计数,time,snowflake-cloud-data-platform,Time,Snowflake Cloud Data Platform,我使用一个查询来检索不同的计数公司和产品,如下所示。 我无法检索通过的整个期间(本例中为第1季度)的不同计数: 如果我用e DATEADD生成最后一个季度(“季度”、-1“期间”),我就有了QTD。你知道我该怎么处理吗 预期结果: 时期 国家 一刻钟 上季度 单位 公司 第1季度公司 2020-01-01 00:00:00.000 判定元件 2020-01-01 00:00:00.000 2019-01-10 00:00:00.000 2. 2. 0 2020-01-02 00:00:00.00

我使用一个查询来检索不同的计数公司和产品,如下所示。 我无法检索通过的整个期间(本例中为第1季度)的不同计数:

如果我用e DATEADD生成最后一个季度(“季度”、-1“期间”),我就有了QTD。你知道我该怎么处理吗

预期结果:

时期 国家 一刻钟 上季度 单位 公司 第1季度公司 2020-01-01 00:00:00.000 判定元件 2020-01-01 00:00:00.000 2019-01-10 00:00:00.000 2. 2. 0 2020-01-02 00:00:00.000 判定元件 2020-01-01 00:00:00.000 2019-01-10 00:00:00.000 1. 3. 0 2020-01-03 00:00:00.000 判定元件 2020-01-01 00:00:00.000 2019-01-10 00:00:00.000 4. 6. 0 2020-01-04 00:00:00.000 判定元件 2020-01-04 00:00:00.000 2020-01-01 00:00:00.000 3. 3. 6. 2020-01-05 00:00:00.000 判定元件 2020-01-04 00:00:00.000 2020-01-01 00:00:00.000 1. 4. 6. 2020-01-06 00:00:00.000 判定元件 2020-01-04 00:00:00.000 2020-01-01 00:00:00.000 1. 4. 6. 2020-01-07 00:00:00.000 判定元件 2020-01-07 00:00:00.000 2020-01-04 00:00:00.000 2. 2. 4. 2020-01-08 00:00:00.000 判定元件 2020-01-07 00:00:00.000 2020-01-04 00:00:00.000 2. 4. 4. 2020-01-09 00:00:00.000 判定元件 2020-01-07 00:00:00.000 2020-01-04 00:00:00.000 2. 5. 4. 2020-01-10 00:00:00.000 判定元件 2020-01-10 00:00:00.000 2020-01-07 00:00:00.000 2. 2. 5. 2020-01-12 00:00:00.000 判定元件 2020-01-10 00:00:00.000 2020-01-07 00:00:00.000 1. 2. 5.
您好-您不必通读您的代码并试图理解逻辑,请您用文字解释一下company_Q和company_q1代表什么以及如何计算它们?Hello@NickW,
CompanyQ=distinct count company**quarty to date**
表示如果您有一个期间,您将计算实际季度开始和当前季度期间之间的所有不同公司。company_Q1意味着,我希望上一季度所有公司的计数都不同。
CREATE OR REPLACE TEMPORARY TABLE "TMP_TEST" (
    "Period"  TIMESTAMP,
    "Country"     VARCHAR,
    "Quarter"    TIMESTAMP,
    "Last Quarter"    TIMESTAMP,
    "Company"    VARCHAR
);

INSERT INTO "TMP_TEST" 
VALUES 
('01/01/2020','DE           ','01/01/2020  ','01/10/2019   ','WKDM2     '),
('01/01/2020','DE           ','01/01/2020  ','01/10/2019   ','2GFSDG37  '),
('01/02/2020','DE           ','01/01/2020  ','01/10/2019   ','ORD56     '),
('01/03/2020','DE           ','01/01/2020  ','01/10/2019   ','GFDS      '),
('01/03/2020','DE           ','01/01/2020  ','01/10/2019   ','24GFDSGF2 '),
('01/03/2020','DE           ','01/01/2020  ','01/10/2019   ','2GFSDG37  '),
('01/03/2020','DE           ','01/01/2020  ','01/10/2019   ','24GSFD1   '),
('01/04/2020','DE           ','01/04/2020  ','01/01/2020   ','2GFSDG37  '),
('01/04/2020','DE           ','01/04/2020  ','01/01/2020   ','23GSFDG5  '),
('01/04/2020','DE           ','01/04/2020  ','01/01/2020   ','24GSFD1   '),
('01/05/2020','DE           ','01/04/2020  ','01/01/2020   ','23GSDF6   '),
('01/06/2020','DE           ','01/04/2020  ','01/01/2020   ','24GSFD1   '),
('01/07/2020','DE           ','01/07/2020  ','01/04/2020   ','GFDS      '),
('01/07/2020','DE           ','01/07/2020  ','01/04/2020   ','24GFDSGF2 '),
('01/08/2020','DE           ','01/07/2020  ','01/04/2020   ','2GFSDG37  '),
('01/08/2020','DE           ','01/07/2020  ','01/04/2020   ','24GSFD1   '),
('01/09/2020','DE           ','01/07/2020  ','01/04/2020   ','2GFSDG37  '),
('01/09/2020','DE           ','01/07/2020  ','01/04/2020   ','23GSFDG5  '),
('01/10/2020','DE           ','01/10/2020  ','01/07/2020   ','24GSFD1   '),
('01/10/2020','DE           ','01/10/2020  ','01/07/2020   ','23GSDF6   '),
('01/12/2020','DE           ','01/10/2020  ','01/07/2020   ','24GSFD1   ');

SELECT "Period"
    ,"Country"
    ,"Quarter"
    ,"Last Quarter"
    ,COUNT(DISTINCT("Company")) AS "Company"
    ,MAX("Company_sq") as "company_Q"
    ,MAX("Company_sy") as "company_q1"
FROM (
    SELECT *
        ,sum(iff(rq_c=1, 1,0)) OVER (PARTITION BY "Country","Quarter" order by "Period" rows between unbounded preceding and current row) as "Company_sq"
        ,sum(iff(ry_c=1, 1,0)) OVER (PARTITION BY "Country","Quarter","Last Quarter" order by "Period" rows between unbounded preceding and current row) as "Company_sy"
    FROM ( 
        SELECT *
            ,ROW_NUMBER() OVER(PARTITION BY "Country","Quarter","Company" order by "Period" ) as rq_c
            ,ROW_NUMBER() OVER(PARTITION BY "Country","Last Quarter","Company" order by "Period" ) as ry_c
        FROM TMP_TEST
    )
)
GROUP BY 1,2,3,4
ORDER BY "Period";