(抱歉,我想不出更好的标题)
我创建了以下 select 语句 (SQL Server) 作为视图。
SELECT DISTINCT
dbo.ECB.Currency + '-' +
CAST(dbo.ECB.Date AS varchar(30)) AS ComboDate,
dbo.ECB.Rate AS ECBrate
FROM
dbo.ECB
INNER JOIN
dbo.MyTable ON dbo.ECB.Date = dbo.MyTable.CutoffDate
AND dbo.ECB.Currency = dbo.MyTable.MyCurrency
我的问题:
我注意到的是我有Saturday and Sunday我的日期截止日期列但不在ECB
日期列 - 意味着我没有那些日子的费率。
由于我使用CutoffDate
在 Excel 计算中,我希望视图将周六和周日的日期值“替换”为周五。
我找到了这个工作片段并根据我的需要进行了修改。
SELECT
DISTINCT
CASE WHEN DATEPART(weekday, dbo.CutoffDate) IN (6, 7)
THEN DATEADD(d, -((DATEPART(weekday, dbo.CutoffDate) + 1 + @@DATEFIRST) % 7), dbo.CutoffDate)
ELSE dbo.CutoffDate
END
FROM
MyTable
现在我需要找到一种方法来结合这两种结构,这就是我希望你能帮助我的地方。
我想将第二个 select 语句添加到我的视图中,但未能成功。
谢谢。
如果你移动你的case
声明进入连接,它应该起作用。
Change
dbo.MyTable ON dbo.ECB.Date = dbo.MyTable.CutoffDate
To
dbo.Mytable ON dbo.ECB.Date = case when datepart(weekday, dbo.CutoffDate) IN (6,7)
then dateadd(d, -((datepart(weekday, dbo.CutoffDate) + 1 + @@DATEFIRST) % 7), dbo.CutoffDate)
else dbo.CutoffDate
end
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)