Snowflake cloud data platform 雪花横向子查询失败
如果在Snowflake中运行下面的SQL,您将看到它返回SQL编译错误:无法计算不支持的子查询类型。就我的一生而言,我不知道如何重写它,以便它能完成我想做的事情。有什么建议吗Snowflake cloud data platform 雪花横向子查询失败,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,如果在Snowflake中运行下面的SQL,您将看到它返回SQL编译错误:无法计算不支持的子查询类型。就我的一生而言,我不知道如何重写它,以便它能完成我想做的事情。有什么建议吗 CREATE OR REPLACE TABLE TEST1 ( ROWID INT IDENTITY(1,1), DATESTAMP TIMESTAMP_NTZ(9), STATE_ID INT, IS_TEST BOOLEAN, USER_ID INT, GROUP_I
CREATE OR REPLACE TABLE TEST1
(
ROWID INT IDENTITY(1,1),
DATESTAMP TIMESTAMP_NTZ(9),
STATE_ID INT,
IS_TEST BOOLEAN,
USER_ID INT,
GROUP_ID INT,
SECONDARY_USER_ID INT
);
INSERT INTO TEST1 (DATESTAMP, STATE_ID, IS_TEST, USER_ID, GROUP_ID) SELECT '01/01/2020', 31, TRUE, 1, 1;
INSERT INTO TEST1 (DATESTAMP, STATE_ID, IS_TEST, USER_ID, GROUP_ID) SELECT '02/01/2020', 31, TRUE, 1, 1;
INSERT INTO TEST1 (DATESTAMP, STATE_ID, IS_TEST, USER_ID, GROUP_ID) SELECT '05/01/2020', 29, NULL, 5, 1;
INSERT INTO TEST1 (DATESTAMP, STATE_ID, IS_TEST, USER_ID, GROUP_ID) SELECT '06/01/2020', 32, TRUE, 6, 1;
UPDATE TEST1 T1
SET SECONDARY_USER_ID = TSU.USER_ID
FROM TEST1 TS,
LATERAL (SELECT TOP 1 USER_ID
FROM TEST1 X
WHERE USER_ID <> 3
AND X.DATESTAMP < TS.DATESTAMP
AND TS.GROUP_ID = X.GROUP_ID
AND (
(X.STATE_ID = 29 and TS.IS_TEST IS NULL)
OR
(X.STATE_ID = 32 and TS.IS_TEST = TRUE)
)
ORDER BY X.DATESTAMP DESC
) TSU
WHERE TS.STATE_ID = 31
AND TS.ROWID = T1.ROWID;
如果替换以下内容,则查询将起作用: 按X选择前1[…]个订单。日期戳说明 与 GROUPORDER内的数组\u AGGX.USER\u ID BY X.DATESTAMP DESC[0] 完整查询: 更新test1t1 设置辅助用户\u ID=TSU.USER\u ID 从test1ts开始, 横向选择GROUPORDER内的数组\u AGGX.USER\u ID(按日期戳DESC[0]USER\u ID) 从test1x开始 其中用户ID为3 和X.邮戳