我对此是否想得太多,或者我缺乏SQL技能。我需要从第二个表中向表中添加两列,但值在第二个表中的单独行中。什么SQL会这样做?这是一个例子。 transnum是表之间的公用列。
TABLE1
------
transnum id
9287 006
5782 004
5819 001
TABLE2
------
transnum code value
9287 A 198.38
9287 B 928.57
9287 C 568.25 -- code C values not needed
5782 A 219.53
5782 B 591.11
5782 C 852.32
5819 A 109.92
5819 B 251.81
5819 C 295.12
DESIRED RESULT
--------------
transnum id valueA valueB
9287 006 198.38 928.57
5782 004 219.53 591.11
5819 001 109.92 251.81
编辑:语法。
最佳答案
您可以使用不同的条件两次连接到同一张表:
SELECT t1.TransNum, t1.id, t2_A.value "ValueA", t2_B.value "ValueB"
FROM Table1 t1
INNER JOIN Table2 t2_A ON t2_A.transnum = t1.transnum AND t2_A.code = 'A'
INNER JOIN Table2 t2_B ON t2_B.transnum = t1.transnum AND t2_B.code = 'B'
如果您在某些情况下可能只为其中一种代码提供数据,则根据您的操作,可能需要使用
LEFT JOIN
而不是INNER JOIN
。如果这样做,您可能还想在没有匹配记录的情况下对select子句中的值使用COALESCE()
函数以显示除NULL
以外的内容。