Sql 如何计算天数?
我们让它工作得很好,但我想展示一个列,它将显示自最后一个实际日期起的天数 我不知道如何将“day”编码为输出列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
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不客气,请设置答案,谢谢