我有以下查询无法运行说明“历史记录查询必须包含至少一个有效的标记名”。这个让我很难过。
DECLARE @tag varchar(255),
@sqlstring varchar(4000)
SET @tag = 'rm01'
SELECT
value
FROM StringHistory e
INNER JOIN (SELECT
badge,
lastname AS name
FROM [LOCALSERVER].[my_log].[dbo].[local_Operators]
WHERE type = '''op''') u
ON e.value = u.badge
AND e.TagName = 'first' + (CASE
WHEN @tag = 'rm01' THEN '03'
END) + '_dat_badge'
AND DateTime >= DATEADD(HH, -12, GETDATE())
AND DateTime <= GETDATE()
我假设它与案例陈述和单引号有关?因为如果我删除case语句并只使用('03'),查询就会运行。
谢谢
答案 0 :(得分:0)
您的CASE
- 表达式未指定ELSE
。这将导致返回NULL
,这将导致'first' + NULL + '_dat_badge'
,而NULL
又为ELSE
。
我相信将SELECT
value
FROM StringHistory e
INNER JOIN (SELECT
badge,
lastname AS name
FROM [LOCALSERVER].[my_log].[dbo].[local_Operators]
WHERE type = '''op''') u
ON e.value = u.badge
AND e.TagName = 'first' + (CASE
WHEN @tag = 'rm01' THEN '03' ELSE ''
END) + '_dat_badge'
AND DateTime >= DATEADD(HH, -12, GETDATE())
AND DateTime <= GETDATE()
添加为空字符串将解决错误。
resources :assesments, default: {action: :index }