[英]Select every date where date is equal to today's date minus 1 day - Not working with dateadd on Month/year - T SQL
[英]SQL Server : select * from table where date minus one year
如何選擇第一年?
這是我的代碼:
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、數量、訂單日期-1 年、數量。 有必要比較今年和去年的銷售數量
您在單引號 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())
我懷疑你想要的是:
select . . .
from dbo.SVF_View_10 v left outer join
dbo.SVF_View_10_sum vs
on v.kli_kod = vs.kli_kod and a.pre_kod = b.pre_kod and
v.did_dat = dateadd(year, -1, vs.did_dat);
筆記:
where
子句中有一個日期計算,而不是一個布爾表達式。 那是導致你的錯誤。嘗試這個 :-
SELECT a.*
FROM
(
SELECT met_men,kli_kod,pre_kod,galutinis,savik_group,marza,KLR_KOD,LI_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
FROM SVF_View_10_sum
) AS a
LEFT OUTER JOIN
(
SELECT pre_kod,kli_kod,met_men,did_dat
FROM dbo.SVF_View_10_sum
WHERE did_dat = 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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.