0

更新 1: 私のデータは次のようになります。

EmployeeId    EmployeeName    Active
12312         bob             0
23432         rob             1
32312         dan             0
43432         jan             1
.........................
.........................

アップデート:

こんな感じでお世話になっています。

EmployeeId    EmployeeName    Active
12312         bob             active
23432         rob             pending
.........................
.........................

次のSQLステートメントを回避しようとしていますが、エラーが発生し、これが正しい方法であるかどうかわかりません...

//エラー: キーワード 'SET' 付近の構文が正しくありません。

declare @currentStatus nvarchar(50)

Select EmployeeId,EmployeeName,Active,
       set @currentStatus = case when EmployeeId is not null and Active = 0 then "Active"  else "Pending" end as Status
from EmployeeTable
4

3 に答える 3

1

これを試してみるべきだと思います:

SELECT EmployeeId, EmployeeName, CASE 
       WHEN (EmployeeId IS NOT NULL AND Active = 0) THEN 'Active' ELSE 'Pending' 
       END AS [Status]  
FROM EmployeeTable
于 2012-07-12T20:23:34.417 に答える
0

更新された質問に表示される結果を取得するには、これが必要な唯一のクエリです。各行のケース式の結果を保持するためにローカル変数が必要だと思う理由がわかりません。

SELECT 
  EmployeeId,
  EmployeeName,
  Active,
  [Status] = CASE WHEN EmployeeId IS NOT NULL AND Active = 0 
     THEN 'Active' 
     ELSE 'Pending' END
FROM dbo.EmployeeTable;

問題で提供されたサンプルデータで更新されたEDIT :

DECLARE @e TABLE(EmployeeID INT, EmployeeName VARCHAR(32), Active BIT);

INSERT @e VALUES
(12312,'bob',0),
(23432,'rob',1),
(32312,'dan',0),
(43432,'jan',1);

SELECT 
  EmployeeId,
  EmployeeName,
  Active,
  [Status] = CASE WHEN EmployeeId IS NOT NULL AND Active = 0 
     THEN 'Active' 
     ELSE 'Pending' END
FROM @e;

結果:

EmployeeId  EmployeeName  Active  Status
12312       bob           0       Active
23432       rob           1       Pending
32312       dan           0       Active
43432       jan           1       Pending
于 2012-07-12T16:04:39.110 に答える
0
Select EmployeeId,EmployeeName,Active,
       case when EmployeeId is not null and Active = 0 then 'Active'  else 'Pending' end as Status
from EmployeeTable

@CurrentStatus 変数を設定する必要がある場合は、個別に行う必要があります。

Set @currentStatus = case when EmployeeId is not null and Active = 0 then 'Active'  else 'Pending' end 
from EmployeeTable
于 2012-07-12T15:54:54.087 に答える