我需要加入兩個表。必須使用引數@timezone 處理連接。但是有一個問題 - @timezone 的值可以是 null、''、'' 或其他任何值。用戶可以輸入所有內容。
如果@timezone 的值為空,則連接的結果基本上什么都沒有。因此,如果發生這種情況,必須至少有基本價值才能加入(例如,“太平洋標準時間”)
DECLARE @StartDate DATE = '2022-01-20', @EndDate DATE = '2022-01-30', @t1 INT = 12345, @timezone VARCHAR(max) = NULL, @OnlyActivated INT = 0
SELECT r.ChargeType, r.CustomerName, r.PurchaseDate, r.accountID
FROM table_report as r
LEFT JOIN [sys].[time_zone_info] tzi ON tzi.[name] = @timezone (???)
我嘗試過IIF(@timezone IN (NULL,'',' '),'Pacific Standard Time',@timezone),它適用于 '' 和 ' ' 場景,但后來我意識到 null 無法比較。
也許有一個非常明顯的解決方案,但我沒有看到。
希望您能對此有所幫助。
PS CURRENT_TIMEZONE_ID() 不受支持。
uj5u.com熱心網友回復:
您需要左加入兩次才能執行此操作。第二個連接需要有一個條件,即只有在第一個連接不成功時才執行。
DECLARE
@StartDate DATE = '2022-01-20',
@EndDate DATE = '2022-01-30',
@t1 INT = 12345,
@timezone VARCHAR(max) = NULL,
@OnlyActivated INT = 0;
SELECT
r.ChargeType, r.CustomerName, r.PurchaseDate, r.accountID,
ISNULL(tzi1.SomeValue, tzi2.SomeValue)
FROM table_report as r
LEFT JOIN [sys].[time_zone_info] tzi1 ON tzi1.[name] = @timezone
LEFT JOIN [sys].[time_zone_info] tzi2 ON tzi2.[name] = 'Pacific Standard Time'
AND tzi1.[name] IS NOT NULL;
另一種選擇,如果你只是擔心的NULL是ISNULL變數
DECLARE
@StartDate DATE = '2022-01-20',
@EndDate DATE = '2022-01-30',
@t1 INT = 12345,
@timezone VARCHAR(max) = NULL,
@OnlyActivated INT = 0;
SELECT
r.ChargeType, r.CustomerName, r.PurchaseDate, r.accountID,
tzi.SomeValue
FROM table_report as r
LEFT JOIN [sys].[time_zone_info] tz1 ON tzi.[name] = ISNULL(@timezone, 'Pacific Standard Time');
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/432312.html
上一篇:在加入2個表時需要幫助
