我正在用SQL开发一个UDF,通过将函数应用于日期列,它可以生成哪些日期是假日,哪些日期不是假日。它将与我已经设置的视图(dbo.Holidays)进行比较,该视图包含所有需要比较的公共假日。
目前我拥有的代码:
CREATE FUNCTION [dbo].[IsHoliday] (
@Date DATE)
RETURNS BIT
AS BEGIN
DECLARE @Check BIT
SELECT @Check = CASE WHEN @Date = [Holiday]
THEN 1
ELSE 0
END
FROM dbo.Holidays
RETURN (@Check)
END
示例数据(Holidays表):
预期结果:
2022-12-12 | 0 |
2020-01-01 | 1 |
2020-01-02 | 1 |
2020-02-06 | 1 |
当前,结果显示为:
2022-12-12 | 0 |
2020-01-01 | 1 |
2020-01-02 | 0 |
2020-02-06 | 0 |
到目前为止,我遇到的问题是-当我将此函数应用于日期列时,它只生成“1”到第一个公共假日,其余所有假日都生成为“0”。我觉得视图需要遍历我应用此函数的数据集的每一行。我该如何修复它?
谢谢
尝试在join中包含一个case,但也不起作用。
1条答案
按热度按时间2izufjch1#
您当前的查询只是获取最顶端(未定义顺序)的记录。您需要检查特定记录,您可以使用
EXISTS
执行此操作: