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文字の場合は、4つの0を表示し、それ以外の場合は3つの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],

結局、私はcaseステートメントさえ必要としませんでしたが、この投稿は私がそれらの使い方を学ぶのに役立ちました。代わりに、番号の前に100を追加したコードを使用しました。それから私は正しい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 に答える