我对此是否想得太多,或者我缺乏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以外的内容。

09-26 21:49
查看更多