create table t(a int, b int); insert into t values (1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3); select * from t; a | b ---------- 1 | 1 1 | 2 1 | 3 2 | 1 2 | 2 2 | 3 3 | 1 3 | 2 3 | 3 select max(case when a = 1 then b else 0 end) as q, max(case when b = 1 then a else 0 end) as c, (max(case when a = 1 then b else 0 end)+max(case when b = 1 then a else 0 end)) as x from t
Czy można zrobić coś takiego?Jak uzyskać wartość x bez duplikacji kodu?
select max(case when a = 1 then b else 0 end) as q, max(case when b = 1 then a else 0 end) as c, (q + c) as x from t
1) odpowiedź może zależeć od dostawcy SQL. MySQL? Wyrocznia? Serwer SQL? 2) Założę się na tabelę tymczasową zawierającą pierwsze dwie kolumny, a następnie wybierz z niej dwie kolumny i nową kolumnę. Może to zrobić – Patashu