Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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/7/sql-server/25.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 - Fatal编程技术网

Sql 如何计算天数?

Sql 如何计算天数?,sql,sql-server,Sql,Sql Server,我们让它工作得很好,但我想展示一个列,它将显示自最后一个实际日期起的天数 我不知道如何将“day”编码为输出列 WITH cte_ul_ev AS ( SELECT ev.full_name, ev.event_name, ev.actual_date, ev.service_provider_name, datediff(day, actual_da

我们让它工作得很好,但我想展示一个列,它将显示自最后一个实际日期起的天数 我不知道如何将“day”编码为输出列

WITH
    cte_ul_ev AS (
        SELECT 
            ev.full_name,
            ev.event_name,
            ev.actual_date,
            ev.service_provider_name,
            datediff(day, actual_date, getdate())
            row_num = ROW_NUMBER() OVER (PARTITION BY ev.full_name ORDER BY ev.actual_date DESC)    --<<--<<--
        FROM
            dbo.event_expanded_view ev
        WHERE
            ev.full_name IS NOT NULL 
            AND ev.category_code IN ('OTHER_ACT', 'CONTACTS', 'PEOPLEPLANS', 'PEOPLETESTS', 'PERSONREQ')
        )
SELECT
    ue.full_name,
    ue.event_name,
    ue.actual_date,
    ue.service_provider_name
    
FROM
    cte_ul_ev ue
WHERE
    ue.row_num = 1;

    
与
cte_ul_ev AS(
挑选
ev.全名,
ev.event_名称,
ev.实际日期,
电动汽车服务供应商名称,
datediff(日期、实际日期、getdate())

row_num=row_NUMBER()OVER(按ev.full_name ORDER按ev.actual_date DESC划分)--您只是缺少了一个逗号和,而且错误的列别名和seesm-like-distinct是您额外要做的事情

;WITH
    cte_ul_ev AS (
        SELECT 
            ev.full_name,
            ev.event_name,
            ev.actual_date,
            ev.service_provider_name,
            datediff(day, actual_date, getdate()) as DaysDiff,
            ROW_NUMBER() OVER (PARTITION BY ev.full_name ORDER BY ev.actual_date DESC)  as row_num  --<<--<<--
        FROM
            dbo.event_expanded_view ev
        WHERE
            ev.full_name IS NOT NULL 
            AND ev.category_code IN ('OTHER_ACT', 'CONTACTS', 'PEOPLEPLANS', 'PEOPLETESTS', 'PERSONREQ')
        )
SELECT
    ue.full_name,
    ue.event_name,
    ue.actual_date,
    ue.service_provider_name.
    ue.DaysDiff
    
FROM
    cte_ul_ev ue
WHERE
    ue.row_num = 1;
;带有
cte_ul_ev AS(
挑选
ev.全名,
ev.event_名称,
ev.实际日期,
电动汽车服务供应商名称,
datediff(day,actual_date,getdate())作为DaysDiff,

行号()覆盖(按ev.full\u name顺序按ev.actual\u date DESC划分)作为行号--“我不知道该放在哪里”在
中选择
。您在这里实际问什么?分号(
)也是语句终止符,而不是“开始符”。它只放在所有语句的末尾,而不是开头。此外,这里不需要使用
DISTINCT
,因为您正在使用
ROW\u NUMBER
删除其他行。
DISTINCT
只会增加不必要的开销,应该删除。但是我已经删除了。很抱歉,它被删除了。前导;显然是一个宠物peeve代表@Larnu(我们都有)。它没有害处。看一眼@johncapelletti是对的,它没有害处,而且它是我的一个例子,但在我看来它确实教人坏习惯。特别是因为它确实导致人们似乎认为所有带有
子句的
都以分号开头。CTE中的列如果是表达式,就需要别名。列的别名没有分号一个表的别名作为限定符,@PasPalter。谢谢我把daysdiff放在最后一节,它会根据需要输出一列,太好了!@PasPalter不客气,请设置答案,谢谢