Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL忽略嵌套大小写_Sql_Sql Server 2008_Case - Fatal编程技术网

SQL忽略嵌套大小写

SQL忽略嵌套大小写,sql,sql-server-2008,case,Sql,Sql Server 2008,Case,我正在创建一个日期维度,但有一个问题,我必须定义“lastworkingdayofmonth”,并在其上设置一个标志 我可以应付所有的日子,但如果是假日,我就不能在前一天挂国旗了 请帮帮我:) 我认为这样的事情可能适合你: UPDATE dd SET ISLASTWORKINGDAYMONTH = 1 FROM DATE_DIMENSION_001 dd left join DATE_DIMENSION_001 dd_anti on DA

我正在创建一个日期维度,但有一个问题,我必须定义“lastworkingdayofmonth”,并在其上设置一个标志

我可以应付所有的日子,但如果是假日,我就不能在前一天挂国旗了

请帮帮我:)


我认为这样的事情可能适合你:

UPDATE  dd
SET     ISLASTWORKINGDAYMONTH = 1
FROM
   DATE_DIMENSION_001 dd
     left join
   DATE_DIMENSION_001 dd_anti
     on
        DATEPART(year,dd.FullDate) = DATEPART(year,dd_anti.FullDate) and
        DATEPART(month,dd.FullDate) = DATEPART(month,dd_anti.FullDate) and
        dd_anti.FullDate > dd.FullDate and
        dd_anti.IsWeekday = 1 and
        dd_anti.IsHolidayAut = 0
WHERE
    dd.IsWeekday = 1 and
    dd.IsHolidayAut = 0 and
    dd_anti.FullDate is null

也就是说,我们找到的行是平日,而不是假日,并且(通过
dd_anti
左连接
WHERE
子句中的
null
检查)我们无法找到同一个月的另一行,但找到的是更晚的日期,这也是一个工作日,而不是假日。

您的预期输出是什么?您现在得到了什么?我想在这里注意的一点是,您没有处理案例陈述的其他部分。如果在case-when语句中正确处理Else部分,这将是代码安全的一面。我想在“Islastworkingday”列上设置标志10年来,我得到117个月,我应该得到120个月,其他3个月是在我的研究假期之后,所以嵌套案例应该检查这一点,但不知何故,它被忽略了,我认为它无法工作,它只是在2019年设置了1个月,而在2010年和2018年之间没有设置为什么?@SerkanArslan-啊,哎呀。我们还应该在连接条件中进行
测试。我将在.thx中编辑它现在工作正常:)我很高兴thx兄弟:D@Damien_不信者你知道我如何对季度做同样的事情吗?我可以每月换一个季度吗?@SerkanArslan-
DATEPART
也可以返回季度,因此你可以替换检查“同一个月”的行:
DATEPART(month,dd.FullDate)=DATEPART(month,dd_anti.FullDate)
其中一个表示“同一季度”:
DATEPART(quarty,dd.FullDate)=DATEPART(quarty,dd_anti.FullDate)
。是的,改为quarty回答了我上面的问题,我想再次感谢您的代码,它做了大量工作:)
UPDATE  dd
SET     ISLASTWORKINGDAYMONTH = 1
FROM
   DATE_DIMENSION_001 dd
     left join
   DATE_DIMENSION_001 dd_anti
     on
        DATEPART(year,dd.FullDate) = DATEPART(year,dd_anti.FullDate) and
        DATEPART(month,dd.FullDate) = DATEPART(month,dd_anti.FullDate) and
        dd_anti.FullDate > dd.FullDate and
        dd_anti.IsWeekday = 1 and
        dd_anti.IsHolidayAut = 0
WHERE
    dd.IsWeekday = 1 and
    dd.IsHolidayAut = 0 and
    dd_anti.FullDate is null