SQL 服务器查询到 Snowsql
SQL Server queries to Snowsql
我正在尝试将以下 SQL 服务器查询转换为 Snowflake 查询。
如何将其转换为 Snowflakesql 格式?我尝试使用 cast as int,to_number 但我没有成功。我是新手。
查询 1:
SELECT convert(date, cast(p.yearnumber * 10000 + p.monthnumber * 100 + 1 as varchar(8)), 112) AS Month
FROM tablea m
INNER JOIN tableb p
ON p.period >= m.MinimumPeriod
AND p.period <= m.MaximumPeriod
查询 2:
SELECT CONVERT(INT,YEAR(DATEADD(MONTH,a.Offset,pid+'-01')))*100 +CONVERT(INT,MONTH(DATEADD(MONTH,a.Offset,pid+'-01'))) AS per_id
How can I convert this to Snowflakesql format?
与其尝试在平台之间翻译代码 1:1,我会首先尝试确定它实际在做什么。
SELECT convert(date, cast(p.yearnumber * 10000 + p.monthnumber * 100 + 1 as varchar(8)), 112
从零开始:
SELECT cast(p.yearnumber * 10000 + p.monthnumber * 100 + 1 as varchar(8))
FROM (SELECT 2021 AS yearnumber, 10 AS monthnumber) p
-- 20211001
SELECT convert(date, cast(p.yearnumber * 10000 + p.monthnumber * 100 + 1 as varchar(8)), 112)
FROM (SELECT 2021 AS yearnumber, 10 AS monthnumber) p
--2021-10-01
正如我们所见,我们正在根据年、月构建日期。在 SQL 服务器中我们可以使用:
SELECT DATEFROMPARTS(2021,10,1)
FROM (SELECT 2021 AS yearnumber, 10 AS monthnumber) p
并且 Snowflake 支持 DATEFROMPARTS 与 SQL 服务器完全相同。
SELECT DATEFROMPARTS(p.yearnumber, p.monthnumber, 1) AS Month
FROM tablea m
INNER JOIN tableb p
ON p.period >= m.MinimumPeriod
AND p.period <= m.MaximumPeriod;
我将第二个查询留作练习。
我正在尝试将以下 SQL 服务器查询转换为 Snowflake 查询。
如何将其转换为 Snowflakesql 格式?我尝试使用 cast as int,to_number 但我没有成功。我是新手。
查询 1:
SELECT convert(date, cast(p.yearnumber * 10000 + p.monthnumber * 100 + 1 as varchar(8)), 112) AS Month
FROM tablea m
INNER JOIN tableb p
ON p.period >= m.MinimumPeriod
AND p.period <= m.MaximumPeriod
查询 2:
SELECT CONVERT(INT,YEAR(DATEADD(MONTH,a.Offset,pid+'-01')))*100 +CONVERT(INT,MONTH(DATEADD(MONTH,a.Offset,pid+'-01'))) AS per_id
How can I convert this to Snowflakesql format?
与其尝试在平台之间翻译代码 1:1,我会首先尝试确定它实际在做什么。
SELECT convert(date, cast(p.yearnumber * 10000 + p.monthnumber * 100 + 1 as varchar(8)), 112
从零开始:
SELECT cast(p.yearnumber * 10000 + p.monthnumber * 100 + 1 as varchar(8))
FROM (SELECT 2021 AS yearnumber, 10 AS monthnumber) p
-- 20211001
SELECT convert(date, cast(p.yearnumber * 10000 + p.monthnumber * 100 + 1 as varchar(8)), 112)
FROM (SELECT 2021 AS yearnumber, 10 AS monthnumber) p
--2021-10-01
正如我们所见,我们正在根据年、月构建日期。在 SQL 服务器中我们可以使用:
SELECT DATEFROMPARTS(2021,10,1)
FROM (SELECT 2021 AS yearnumber, 10 AS monthnumber) p
并且 Snowflake 支持 DATEFROMPARTS 与 SQL 服务器完全相同。
SELECT DATEFROMPARTS(p.yearnumber, p.monthnumber, 1) AS Month
FROM tablea m
INNER JOIN tableb p
ON p.period >= m.MinimumPeriod
AND p.period <= m.MaximumPeriod;
我将第二个查询留作练习。