在以下查询中,我试图在以前的日期获得GR2的值TabDate:
DECLARE @ShN money=STRLOG.dbo.fn_VarValue('ShN')
DECLARE @ShNs money=STRLOG.dbo.fn_VarValue('ShNs')
DECLARE @ShNN money=STRLOG.dbo.fn_VarValue('ShN') +STRLOG.dbo.fn_VarValue('ShNs')
DECLARE @ShD money=STRLOG.dbo.fn_VarValue('ShD')
SELECT sum(
CASE
WHEN ttab.GR2='33'
THEN
CASE
-- Randam ar sekianti diena sventes
WHEN tholy.[ID] IS NOT NULL
THEN @ShN
ELSE @ShN
END
WHEN ttab.GR2='3'
THEN
CASE
-- Randam ar sekianti diena sventes
WHEN tholy.[ID] IS NOT NULL
THEN @ShNs
-- Randam ar tai pirma 3-cios pamainos diena
WHEN tprev.GR2='3'
THEN @ShNN
ELSE @ShNs
END
ELSE
CASE
-- Randam ar sekianti diena sventes
WHEN tholy.[ID] IS NOT NULL
THEN @ShD-60
ELSE @ShD
END
END
)/60,
ttab.EmplCodeID
FROM tbl_TabelWHrs INNER JOIN tbl_Tabel ttab
ON tbl_TabelWHrs.TabWHrsID = ttab.TabWHrsID
LEFT JOIN tbl_Holidays tholy
ON [HolidayDate]=DATEADD("DAY",1,[TabDate])
LEFT JOIN tbl_Tabel tprev
ON ttab.[EmplCodeID]=tprev.[EmplCodeID]
AND [ttab.TabDate]=DATEADD("DAY",-1,[tprev.TabDate])
WHERE (tbl_TabelWHrs.TabMon='2014.12' AND ttab.EmplCodeID='7040023' AND ttab.GR2 is not null)
GROUP BY ttab.EmplCodeID;我在执行过程中得到的是两个错误:
Msg 207,级别16,状态1,第47行无效列名“ttabt.abDate”。Msg 207,第16级,状态1,第47行无效列名‘tdevt.abDate’。
"LEFT tbl_Tabel tprev“有问题。“ttab.TabDate=DATEADD("DAY",-1,tprev.TabDate)".”中的字段出现错误。我在这里做错了什么?
发布于 2015-01-25 10:10:52
这里的问题是使用在别名之前使用square bracket,并在列名之后结束它,因此[tprev.TabDate]将被视为列,别名名在这里转义。
像这样改变条件。
.....
LEFT JOIN tbl_Tabel tprev
ON ttab.[EmplCodeID]=tprev.[EmplCodeID]
AND ttab.[TabDate]=DATEADD("DAY",-1,tprev.[TabDate]) -- here
....https://stackoverflow.com/questions/28134989
复制相似问题