2017-01-24 2 views
0

Ich muss Leistungswert zuletzt vergleichen Zeichen W1 mit W6, W2 mit W7, W3 mit W8 usw. Wenn der Leistungswert anders ist, dann muss ich die Zelle & Leistungsinfo ausgeben.SQL Vergleichswert in Spalte

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

vergleichen Zellen Macht. verschiedene Leistungswerte

HUNDAW1 & HUNDAW6 
HUNDAW2 & HUNDAW7 
HUNDAW3 & HUNDAW8 

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

Bitte halten Sie sich an Format der Frage zu stellen. Es ist sehr ambig zu verstehen. –

+1

Bitte erläutern Sie die Logik hinter dem gewünschten Ergebnis. Aus dem, was Sie gezeigt haben, lautet die Antwort: 'select cell, power from the_table, wobei die Zelle in ('HUNDAW2', 'HUNDAW7') ' –

+0

SQL-Tabellen * ungeordnete * Mengen darstellen. Sie scheinen keine Spalte zu haben, die die Reihenfolge angibt. Wie beabsichtigen Sie, die Zeilen abzugleichen? –

Antwort

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

Ich brauche Leistungswert zuletzt vergleichen Zeichen W1 mit W6, W2 mit W7, W3 mit W8. Wenn der Leistungswert anders ist, geben Sie die Zelle und die Leistungsdaten aus. –

+0

@MaisSharifli Genau das ist es –

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 | 
+---------+-------+