0

(对不起,我想不出更好的标题)

我创建了以下选择语句 (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

我的问题:

我注意到的是,我的CutoffDate列中有周六周日的日期,但日期列中没有 - 这意味着我没有那些日子的费率。ECB

由于我使用CutoffDateExcel 计算,我希望视图将周六和周日的日期值“替换”为周五。

我找到了这个工作片段并根据我的需要对其进行了修改。

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 语句添加到我的视图中,但没有这样做。

谢谢你。

4

1 回答 1

2

如果您将case语句移动到连接中,它应该可以工作。

改变

dbo.MyTable ON dbo.ECB.Date = dbo.MyTable.CutoffDate

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

希望这可以帮助。

于 2013-02-20T14:14:39.070 回答