我正在尝试在 Snowflake 中重构 SQL Server 视图,但收到错误消息“无法识别日期”。
我的代码的整体结构如下:
SELECT
g.UserID
,g.AccountId
,g.AccountNumber
,g.AccountDate
,g.column4
,g.column5
,g.column6
,g.AccountType
,g.GameType
,g.column7
,g.column8
,g.column9
,g.column10
,g.ExitDate
,g.ReturnDate
,g.GameLength
,g.Case1
,g.Case2
,g.Case3
FROM DEV_DB.REPORTS.HISTORICAL_GAMES_VW g
LEFT JOIN DEV_DB.GAMES.GAMES_REVENUE_VW r
ON r.GameType =
(CASE
WHEN g.GameType = '2' AND g.ExitDate < '2000-01-01' THEN 'B'
WHEN g.GameType = '2' AND g.ExitDate >= '1990-12-31' THEN '2'
WHEN g.GameType = '3' THEN 'M'
WHEN g.GameType = '4' THEN 'N'
ELSE g.GameType
END)
LEFT JOIN DEV_DB.GAMES.GAME_TYPES_VW t
ON t.GameCode = g.AccountType
WHERE g.ExitDate > '1995-12-31' AND g.AccountDate <= CURRENT_DATE
UNION
SELECT
g.UserID
,g.AccountId
,g.AccountNumber
,g.AccountDate
,g.column4
,g.column5
,g.column6
,g.AccountType
,g.GameType
,g.column7
,g.column8
,g.column9
,g.column10
,g.ExitDate
,g.ReturnDate
,g.GameLength
,g.Case1
,g.Case2
,g.Case3
FROM DEV_DB.REPORTS.CURRENT_GAMES_VW g
LEFT JOIN DEV_DB.GAMES.GAMES_REVENUE_VW r
ON r.GameType =
(CASE
WHEN g.GameType = '2' AND g.ExitDate < '2000-01-01' THEN 'B'
WHEN g.GameType = '2' AND g.ExitDate >= '1990-12-31' THEN '2'
WHEN g.GameType = '3' THEN 'M'
WHEN g.GameType = '4' THEN 'N'
ELSE g.GameType
END)
LEFT JOIN DEV_DB.GAMES.GAME_TYPES_VW t
ON t.GameCode = g.AccountType
WHERE g.Game_CaseID IS NULL
AND g.ExitDate > '1995-12-31'
AND g.AccountDate <= CURRENT_DATE
我尝试了多种选项,包括这个text,但仍然是同样的问题:
WHERE g.ExitDate > COALESCE(TRY_TO_DATE(ExitDate, DATE('1995-12-31'))
AND g.AccountDate <= CURRENT_DATE
WHERE g.ExitDate > TO_DATE('1995-12-31', 'YYYY-MM-DD')
AND g.AccountDate <= CURRENT_DATE
WHERE g.ExitDate > COALESCE(TRY_TO_DATE(g.ExitDate), DATE('1995-12-31)) AS DateExit
AND g.AccountDate <= CURRENT_DATE
如果有人能指出我可能遇到的问题的正确方向。谢谢!
我能够为所引用的四个表的定义生成脚本并创建这些表。我还能够将记录填充到这些表中。我能够成功运行您共享的脚本。 ExitDate 和 AccountDate 字段中的一个(或两个)的一条或多条记录中似乎存在无效值。 如果这些值经过验证,这个问题应该得到解决。