如何加入两个SQL表?

时间:2013-10-01 15:58:18

标签: sql sql-server tsql

我有一张这样的表

pulseid | RunID | Name | Value |<br>
  1     |   1   | api  | 0     |<br>
  2     |   1   | api  | 0     |<br>
  3     |   1   | api  | 0     |<br>

pulseid | RunID | Name | Value |<br>
  1     |   1   | rot  | 900   |<br>
  2     |   1   | rot  | 10    |<br>
  3     |   1   | rot  | 35    |<br>

PulseId是两个表之间的公共字段。我想要一个会给我一个结果的脚本

pulseid | Rot   | API  | Value |<br>
  1     |   900 | 0    | 900   |<br>
  2     |   10  | 0    | 10    |<br>
  3     |   35  | 0    | 35    |<br>

非常感谢任何帮助。谢谢。

3 个答案:

答案 0 :(得分:2)

你想要的是PIVOT。只需两列,使用UNIONGROUP BY进行模拟就更容易了:

SELECT 
    pulseid, 
    SUM(CASE WHEN Name = 'rot' THEN Value ELSE 0 END) Rot,
    SUM(CASE WHEN Name = 'API' THEN Value ELSE 0 END) API
FROM {tablename}
GROUP BY pulseid

答案 1 :(得分:1)

假设:

  • 第一个表名为api
  • 第二个表名为rot
  • 目前还不清楚最后一栏应该是什么。我正在添加apirot,它会提供正确的值,但我不确定这是否是您想要的。

以下是查询:

select
    api.pulseid,
    rot.Value as Rot,
    api.Value as API,
    rot.Value + api.Value as [Value]
from api
join rot on rot.pulseid = api.pulseid

答案 2 :(得分:1)

我认为这些问题是由于缺乏有关该问题的信息而导致的,就好像您自己还没有尝试过一样。我从字面上理解了问题,可以使用以下SQL生成您请求的结果:

SELECT
    Table_1.PulseID,
    Table_2.Value "rot",
    Table_1.Value "api",
    Table_2.Value
FROM
    Table_1
JOIN
    Table_2 ON
        Table_2.PulseID = Table_1.PulseID
        AND Table_2.Name = 'rot'