-4

我有一张这样的桌子

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>

任何帮助是极大的赞赏。谢谢。

4

3 回答 3

2

你想要的是一个PIVOT. UNION只有两列,用 a和 a模拟它可能更容易GROUP 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
于 2013-10-01T16:05:03.390 回答
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'
于 2013-10-01T16:16:07.493 回答
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
于 2013-10-01T16:04:22.977 回答