Я следующие примеры данных в тестовой таблице:Есть ли способ избежать подзапросов?
CREATE TABLE TEST(
f1 varchar(50) NULL,
f2 varchar(50) NULL,
flag int NULL);
INSERT INTO [test]([f1],[f2],[flag]) VALUES('P','a',1);
INSERT INTO [test]([f1],[f2],[flag]) VALUES('P','b',0);
INSERT INTO [test]([f1],[f2],[flag]) VALUES('Q','c',1);
INSERT INTO [test]([f1],[f2],[flag]) VALUES('Q','d',0);
INSERT INTO [test]([f1],[f2],[flag]) VALUES('R','e',1);
INSERT INTO [test]([f1],[f2],[flag]) VALUES('S','f',0);
Я хочу, чтобы этот результат:
f1 f2whenFlagIs1 f2whenFlagIs0
P a b
Q c d
R e NULL
S NULL f
следующий запрос был написан, чтобы иметь те же результаты:
SELECT isnull(test1.f1,test0.f1) f1, test1.f2 f2whenFlagIs1 , test0.f2 AS f2whenFlagIs0
FROM
(select * from test where flag = 1) AS test1 full JOIN
(select * from test where flag = 0) AS test0
ON test1.f1 = test0.f1
Is есть ли способ избежать подзапросов?
+1 для данных образца * и * желаемых результатов! Большинство вопросов не дают ни того, ни другого. –
@abdkok: У вас есть PRIMARY KEY/UNIQUE ограничение/уникальный индекс на столбцах ('f1',' flag')? –
Я удалил тег Oracle, потому что этот синтаксис SQL Server. –