4
SELECT MIN(Measurement),     
       (CASE 'NonDesMin'
          WHEN len(measurement) = 6 then '0000'
          ELSE '000'
        END) as [Min]    
  FROM LeachingView 
 WHERE DateTimeStamp > '2011-01-01' 
   AND measurement > 0 

这是我的 SQL 语句。我想检查字段测量的长度,如果它是 6 个字符长,我想显示四个 0,否则显示三个 0。我会收到一个错误:

'=' 附近的语法不正确。

4

4 回答 4

4

这个怎么样:

select MIN(Measurement), 

    (Case 
        WHEN len(min(measurement)) = 6 then '0000'
        ELSE '000'
        END) as [Min]

from LeachingView 
where DateTimeStamp > '2011-01-01' and measurement > 0 

此外,您正在将聚合体与非聚合体混合。

更新

你应该只是失去'NonDesMin'. 解释:当您在 之后输入“变量”时CASE,您可以让您的WHEN子句将相等性与您的变量进行比较。所以,你的 SQL 也可能是这样的:

select MIN(Measurement), 

    (Case len(min(measurement))
        WHEN  6 then '0000'
        ELSE '000'
        END) as [Min]

from LeachingView 
where DateTimeStamp > '2011-01-01' and measurement > 0 

也就是说,您CASE以这种格式使用:

CASE SomeField
   WHEN 1 then 'One'
   WHEN 2 the 'Two'
   else 'Three or more'
end
于 2011-05-17T16:13:04.873 回答
0
select MIN(Measurement),
     (Case WHEN len(measurement) = 6 then '0000' ELSE '000' END) as [Min]
from LeachingView  where DateTimeStamp > '2011-01-01' and measurement > 0
于 2011-05-17T16:11:53.783 回答
0
      (select min(measurement)
         from LeachingView 
         where measurement > 0 and inspectionid = RIGHT('000000000' + part_desc, 10)                     
             and datetimestamp > '2010-12-31'
  ) as [Non-Destructive Min],

原来我什至不需要案例陈述,但这篇文章帮助我学习了如何使用它们。相反,我只是使用在数字前面添加 10 0 的代码。然后我选择了正确的 8 个字符。这就是这段代码所做的

  RIGHT('000000000' + part_desc, 10)

谢谢大家的帖子

于 2011-06-07T16:54:49.667 回答
-1

我猜你想附加到测量的开头。

SELECT CONCAT(Case WHEN LEN(Measurement) = 6 THEN '0000' ELSE '000' END, MIN(Measurement)) AS Measurement
FROM LeachingView 
WHERE DateTimeStamp > '2011-01-01' AND Measurement > 0;
于 2011-05-17T16:16:40.567 回答