首页 > 解决方案 > SQL Server:从日期减去一年的表中选择*

问题描述

如何选择一年级?

这是我的代码:

select 
    a.* 
from 
    (select 
         met_men, kli_kod, pre_kod, galutinis, savik_group, marza, 
         KLR_KOD, KLI_POZ1, KLI_POZ2, KLI_POZ3, KLG_KOD, PRE_RUS, 
         PRE_POZ1, PRE_POZ2, PRE_POZ3, PRE_POZ4, PRE_POZ5, PRE_POZ6, 
         did_dat, savi_suproc, marza_suproc, pre_ska dbo.SVF_View_10) AS a 
left outer join 
    (select 
         pre_kod, kli_kod, met_men, did_dat 
     from 
         dbo.SVF_View_10_sum 
     where 
         dateadd(year, -1, 'did_dat')) as b on a.kli_kod = b.kli_kod 
                                            and a.pre_kod = b.pre_kod 
                                            and a.did_dat = b.did_dat

此错误发生在以下行where DATEADD(year, -1, 'did_dat')) as b

消息 4145,级别 15,状态 1,第 6 行
在预期条件的上下文中指定的非布尔类型的表达式,靠近 ')'。

请帮我

所需数据:订单日期、id、数量、orderdate-1年、数量。有必要比较今年和去年的销售量

标签: sqlsql-serverwhere

解决方案


您在单引号 dateadd(year, -1, 'did_dat') 中给出列名,这里不需要更改为 dateadd(year, -1, did_dat) 并且当您使用 where 子句时需要在 where 子句中进行比较操作。

所以变成了

where did_dat <= dateadd(year, -1, did_dat)

但这没有任何意义,因为查询应该在上一年针对当前日期执行,例如

where did_dat <= dateadd(year, -1, GETDATE())

推荐阅读