[FIXED] Wie finde ich, welcher Wert in einer anderen Tabelle in einen Wert fällt?

Ausgabe

Ich möchte den in das Zahlenfeld in Tabelle A geschriebenen Wert nehmen und herausfinden, welchem ​​Bereich er in den Feldern für hohen und niedrigen Bereich in Tabelle B entspricht, und ihn wie in der Ergebnistabelle anzeigen. Wenn in mehr als einem Bereich, sollte es nehmen, was zuerst eintritt (B_id ist kleiner)

Ein Tisch

Hilfe Nummer
1 10
2 50
3 60
4 52

zum Beispiel (Zahl = 10)

B-Tisch

Gebot Niedrige Reichweite Hohe Reichweite Typ
1 5 30 EINE KARTE
2 35 55 BCARD
3 50 110 KARTE

zum Beispiel (niedriger Bereich >10 und hoher Bereich <10 das Ergebnis B_id = 1)

Ergebnistabelle

Ausweis Nummer Typ
1 10 EINE KARTE
2 50 BCARD
3 60 KARTE
4 52 BCARD

Lösung

Sie können das folgende SQL versuchen.

Der BETWEENwird verwendet, um die Bereiche zu finden, und ROW_NUMBERhilft, den kleineren Wert zu erhalten.

create table tableA(a_id int, Number int)
insert into tableA values(1,10)
insert into tableA values(2,50)
insert into tableA values(3,60)
insert into tableA values(4,52)

create table tableB(b_id int, lowRange int, highRange int, Rtype varchar(10))
insert into tableB values (1,5,30,'ACARD')
insert into tableB values (2,35,55,'BCARD')
insert into tableB values (3,50,110,'CCARD')

;with CTE AS(
select a.a_id Id, a.Number, b.Rtype, ROW_NUMBER() OVER(PARTITION BY a.a_id ORDER BY LowRange) RN
from tableA A
inner join tableB B on A.Number between B.lowRange and B.highRange
)
select Id, Number, Rtype 
from CTE
where RN = 1

drop table tableA
drop table tableB

Ausgabe:

Id          Number      Rtype
----------- ----------- ----------
1           10          ACARD
2           50          BCARD
3           60          CCARD
4           52          BCARD


Beantwortet von –
DineshDB


Antwort geprüft von –
Mary Flores (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like