このコマンドを使用してCASE
、部分文字列のクエリ結果を数値から名前に変更するだけです。
うまくいくように見えますが、結果に文字列の最初の値しか表示されない理由を理解するのに苦労しています。
Declare @OverrideON INT, @OverrideOFF INT
SET @OverrideON = 1 SET @OverrideOFF = 0
SELECT LonDeviceName,
CASE WHEN SUBSTRING (PointValue,65,1) = @OverrideON THEN 'Fan In Override'
WHEN SUBSTRING (PointValue,67,1) = @OverrideON THEN 'HW In Override'
WHEN SUBSTRING (PointValue,69,1) = @OverrideON THEN 'CHW In Override'
WHEN SUBSTRING (PointValue,71,1) = @OverrideON THEN 'OAD In Override'
WHEN SUBSTRING (PointValue,73,1) = @OverrideON THEN 'VFD In Override'
WHEN SUBSTRING (PointValue,65,1) = @OverrideOFF THEN 'Fan Normal'
WHEN SUBSTRING (PointValue,67,1) = @OverrideOFF THEN 'HW Normal'
WHEN SUBSTRING (PointValue,69,1) = @OverrideOFF THEN 'CHW Normal'
WHEN SUBSTRING (PointValue,71,1) = @OverrideOFF THEN 'OAD Normal'
WHEN SUBSTRING (PointValue,73,1) = @OverrideOFF THEN 'VFD Normal'
ELSE '**StringError**'
END as 'Manual Overrides'
FROM dbo.Points
WHERE LogicName like '%override%'
コードを実行すると、Manual Overrides
正しいタイトルの列が作成され、その列に文字列内の最初の値が表示されます。ただし、文字列内の他の4つの値の結果はどこにありますか。任意の支援やアイデアをいただければ幸いです。
ありがとう。