[英]How to use my horizontal query result to another SQL query
我需要將水平查詢結果用於另一個SQL查詢。 怎么做,請幫忙。 假設我有兩個表:
Tab1:
________________________________________
|ID | ARID | SEQ1 | SEQ2 | SEQ3 | SEQ4 |
|___|______|______|______|______|______|
|a1 | ar01 | A | C | B | D |
|a2 | ar02 | C | D | A | B |
|___|______|______|______|______|______|
Tab2:
_____________________
|ARID | SEQN | CODE |
|_____|______|______|
|ar01 | A | 1 |
|ar01 | G | 4 |
|ar01 | B | 2 |
|ar01 | D | 3 |
|ar01 | C | 8 |
|ar01 | F | 6 |
|ar01 | E | 5 |
|ar01 | H | 7 |
|ar02 | A | 1 |
|ar02 | H | 8 |
|_____|______|______|
好吧,我需要這樣的結果:
ResultTab:
_____________________
|ARID | SEQN | CODE |
|_____|______|______|
|ar01 | A | 1 |
|ar01 | C | 8 |
|ar01 | B | 2 |
|ar01 | D | 3 |
|_____|______|______|
這將獲取SEQ1
, SEQ2
, SEQ3
和SEQ4
一定ARID
從Tab1
和返回映射值Tab2
為ARID
。
請幫我。 謝謝...
試試這個為ARID='ar01'
SELECT A.* FROM Tab2 A, Tab1 B
WHERE A.ARID='ar01' AND A.ARID=B.ARID
AND (A.SEQN=B.SEQ1 OR A.SEQN=B.SEQ2 OR A.SEQN=B.SEQ3 OR A.SEQN=B.SEQ4)
另一種解決方案:-
Select b.* from Table2 b
inner join
(Select [ARID],[Seq1],1 as Ordr from Table1
union all
Select [ARID],[Seq2],2 as Ordr from Table1
union all
Select [ARID],[Seq3],3 as Ordr from Table1
union all
Select [ARID],[Seq4],4 as Ordr from Table1
)a(ARID,Seq,Ordr)
on a.ARID = b.ARID
and a.ARID = 'ar01' and a.SEQ=b.SEQN
order by a.ordr
請使用UNION ALL
以獲得INDEX的好處。
SELECT t1.ARID, t1.SEQ1 AS SEQN
FROM Tab1 t1 INNER JOIN Tab2 t2 ON t1.ARID = t2.ARID
WHERE t1.ARID = 'ar01'
AND t1.SEQN = t2.SEQ1
UNION ALL
SELECT t1.ARID, t1.SEQ2 AS SEQN
FROM Tab1 t1 INNER JOIN Tab2 t2 ON t1.ARID = t2.ARID
WHERE t1.ARID = 'ar01'
AND t1.SEQN = t2.SEQ2
UNION ALL
SELECT t1.ARID, t1.SEQ3 AS SEQN
FROM Tab1 t1 INNER JOIN Tab2 t2 ON t1.ARID = t2.ARID
WHERE t1.ARID='ar01'
AND t1.SEQN = t2.SEQ3
UNION ALL
SELECT t1.ARID, t1.SEQ4 AS SEQN
FROM Tab1 t1 INNER JOIN Tab2 t2 ON t1.ARID = t2.ARID
WHERE t1.ARID='ar01'
AND OR t1.SEQN = t2.SEQ4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.