1

ステートメントを使用しCASEて一時テーブルの作成を支援していますが、何らかの理由でオペランド型の衝突エラーが発生しています。

CREATE TABLE #users 
  ( 
     id       INT IDENTITY (1, 1), 
     userid   UNIQUEIDENTIFIER, 
     username VARCHAR(50),
     sysrole VARCHAR(50) 
  ) 

--Insert all loadtest users into temp table
INSERT INTO #users 
            (userid, 
             username,
             sysrole) 
SELECT id, 
       username,
       sysrole =
       CASE 
            WHEN id between 0 and 100 THEN '63F7971B-45FF-4E3C-86E7-9D0507AF60C0'
            WHEN id between 101 and 200 THEN '26478736-7937-4E52-891B-E80A8D609693'
            WHEN id between 201 and 300 THEN 'CEF5F44F-0961-414C-8578-22BEB0C4B9FF'
            WHEN id between 301 and 400 THEN '63F7971B-45FF-4E3C-86E7-9D0507AF60C0'
            WHEN id between 401 and 500 THEN '7FD13C9E-731B-43AE-95F0-E9AEDC65759C'
        END
FROM   user 
WHERE  username LIKE '%Test%' 

500 人のユーザーがいるため、CASE はこれらすべての可能性を処理します。ただし、オペランド型の衝突は読み取り中です (INSERT INTO が始まる行で) uniqueidentifier is incompatible with tinyint

中にIDENTITY列が自動入力されていませんINSERTか?

user編集:テーブルがどのように見えるかを知ることが役立つことに気付きました。約12の列がありますが、そこから引き出したいものは次のとおりです。

id文字列である主キー usernameです(ユーザーの一意の識別子)

sysroleご覧のとおり、によって定義されてCASEいます。

4

3 に答える 3