我正试图在以下日期TabDate中获取GR2的值以下查询:
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;
我执行的是2个错误:
消息207,级别16,状态1,行47无效的列名称 'ttab.TabDate'。消息207,级别16,状态1,行47无效 列名'tprev.TabDate'。
“LEFT JOIN tbl_Tabel tprev”有问题。 “AND [ttab.TabDate] = DATEADD(”DAY“, - 1, [tprev.TabDate] )行中的字段出现错误。我在这里做错了什么?
答案 0 :(得分:1)
这里的问题是使用在别名之前使用square bracket
并在列名之后结束它,因此[tprev.TabDate]
将被视为列,别名在此处进行转义。
改变这样的条件。
.....
LEFT JOIN tbl_Tabel tprev
ON ttab.[EmplCodeID]=tprev.[EmplCodeID]
AND ttab.[TabDate]=DATEADD("DAY",-1,tprev.[TabDate]) -- here
....