两行具有相同的id和两个不同的值,将第二个值放入另一列

时间:2018-04-24 18:51:16

标签: sql sql-server

我有两行具有相同的ID,但值不同。我想要一个查询来获取第二个值并将其显示在第一行。

每个productId只有两行,还有两个不同的值。 我试过在任何地方寻找解决方案。

我拥有的,例如:

+-----+-------+
| ID  | Value |
+-----+-------+
| 123 |     1 |
| 123 |     2 |
+-----+-------+

我想要什么

+------+-------+---------+
|  ID  | Value | Value 1 |
+------+-------+---------+
| 123  |     1 |       2 |
+------+-------+---------+

3 个答案:

答案 0 :(得分:2)

这是一个自我加入:

SELECT a.ID, a.Value, b.Value
FROM table a
JOIN table b on a.ID = b.ID
            and a.Value <> b.Value

如果有LEFT JOIN只有一个值而且上述ID

会丢失JOIN,则可以使用{{1}}

答案 1 :(得分:2)

可能你可以试试这个

DECLARE @T TABLE
(
    Id INT,
    Val INT
)

INSERT  INTO @T
VALUES(123,1),(123,2),
(456,1),(789,1),(789,2)

;WITH CTE
AS
(
    SELECT
        RN = ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Val),
        *
        FROM @T
)
SELECT
    *
    FROM CTE
    PIVOT
    (
        MAX(Val)
        FOR
        RN IN
        (
            [1],[2]--Add More Numbers here if there are more values
        )
    )Q

答案 2 :(得分:2)

不确定订单对您是否重要。这是一种方式:

SELECT MIN(Value), MAX(Value), ID
FROM Table
GROUP BY ID;