2017-01-24 2 views
0

Мне нужно сравнить значение мощности last Character W1 с W6, W2 с W7, W3 с W8 и т. Д. Если значение мощности отличается, тогда мне нужно вывести ячейку & информации о мощности.Значение сравнения SQL в столбце

cell | power 
---------+------- 
HUNDAW1 | 300 
HUNDAW2 | 300 
HUNDAW3 | 300 
HUNDAW6 | 300 
HUNDAW7 | 320 
HUNDAW8 | 300 

Сравнить элементы питания. различной мощности значения

HUNDAW1 & HUNDAW6 
HUNDAW2 & HUNDAW7 
HUNDAW3 & HUNDAW8 

    cell | power 
---------+------- 
HUNDAW2 | 300 
HUNDAW7 | 320 
+1

Пожалуйста, придерживайтесь формата задавать вопросы. ts очень двусмысленно понять. –

+1

Пожалуйста, объясните логику желаемого результата. Из того, что вы показали, ответ: 'select cell, power from the_table, где cell in ('HUNDAW2', 'HUNDAW7')' –

+0

Таблицы SQL представляют * неупорядоченные * наборы. У вас нет столбца, который указывает порядок, так как вы собираетесь сопоставлять строки? –

ответ

0
with t (cell, power) as (values 
    ('HUNDAW1',300), 
    ('HUNDAW2',300), 
    ('HUNDAW3',300), 
    ('HUNDAW6',300), 
    ('HUNDAW7',320), 
    ('HUNDAW8',300) 
) 
select 
    t0.cell as t0_cell, t0.power as t0_power, 
    t1.cell as t1_cell, t1.power as t1_power 
from 
    t t0 
    inner join 
    t t1 on t0.cell < t1.cell 
where 
    t0.power <> t1.power 
    and 
    (t0.cell, t1.cell) in (
     ('HUNDAW1','HUNDAW6'),('HUNDAW2','HUNDAW7'),('HUNDAW3','HUNDAW8') 
    ) 
order by t0.cell, t1.cell 
; 
t0_cell | t0_power | t1_cell | t1_power 
---------+----------+---------+---------- 
HUNDAW2 |  300 | HUNDAW7 |  320 
+0

Мне нужно сравнить значение мощности последнего символа W1 с W6, W2 с W7, W3 с W8. Если значение мощности различно, выведите информацию о ячейке и питании –

+0

@MaisSharifli Это именно то, что она делает –

0
with t as 
     (
      select cell,power 
        ,count(*)  over()    as cnt 
        ,row_number() over (order by cell) as rn 

      from mytable 
     ) 

select  t1.cell,t1.power 

from    t as t1 

      join t as t2 

      on  t2.rn = (t1.rn + (t1.cnt/2) - 1) % t1.cnt + 1 

where  t1.power <> t2.power 

order by t1.cell  

+---------+-------+ 
| cell | power | 
+---------+-------+ 
| HUNDAW2 | 300 | 
+---------+-------+ 
| HUNDAW7 | 320 | 
+---------+-------+ 
Смежные вопросы