以下のSQLサーバークエリをスノーフレーククエリに変換しようとしています。
これをSnowflakesql形式に変換するにはどうすればよいですか?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
これをSnowflakesql形式に変換するにはどうすればよいですか?
プラットフォーム間でコードを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 Serverでは、次のものを使用できます。
SELECT DATEFROMPARTS(2021,10,1)
FROM (SELECT 2021 AS yearnumber, 10 AS monthnumber) p
また、Snowflakeは、SQLServerとまったく同じDATEFROMPARTSをサポートしています。
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;
演習として2番目のクエリを残します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加