0

以下のように定義されたテーブル EMPLOYEE があります。

CREATE TABLE EMPLOYEE
(
  Employee varchar(50),
  Manager varchar(50),
  field1 bit,
  field2 bit 
) 
INSERT INTO EMPLOYEE VALUES ('Emp1','Mgr1',1,0)
INSERT INTO EMPLOYEE VALUES ('Contactor1','',0,0)
INSERT INTO EMPLOYEE VALUES ('Mgr1','',0,1)
INSERT INTO EMPLOYEE VALUES ('Mgr2','',0,1)
INSERT INTO EMPLOYEE VALUES ('Emp2','Mgr2',1,0)
INSERT INTO EMPLOYEE VALUES ('Emp3','Mgr2',1,0)
INSERT INTO EMPLOYEE VALUES ('Contractor2','',0,0)
INSERT INTO EMPLOYEE VALUES ('Emp4','Mgr1',1,0)

仮定:

  1. field1 が 1 の場合、エンティティは従業員です。

  2. field2 が 1 の場合、エンティティはマネージャーです。

  3. field1 と field2 が 0 の場合、エンティティは請負業者です。

  4. 特定の行で、field1 と field2 の両方に値 1 を指定することはできません。

クエリ SELECT * FROM EMPLOYEE は、次の値を返します。

ここに画像の説明を入力

次の形式で結果を取得できるように、クエリが必要です。

望ましい出力

基本的に、結果には、最初のマネージャーの後に対応する従業員が続き、次のマネージャーの後に対応する従業員が続き、最後にすべての請負業者が存在するはずです。

4

2 に答える 2