我有两行具有相同的ID,但值不同。我想要一个查询来获取第二个值并将其显示在第一行。
每个productId只有两行,还有两个不同的值。 我试过在任何地方寻找解决方案。
我拥有的,例如:
+-----+-------+
| ID | Value |
+-----+-------+
| 123 | 1 |
| 123 | 2 |
+-----+-------+
我想要什么
+------+-------+---------+
| ID | Value | Value 1 |
+------+-------+---------+
| 123 | 1 | 2 |
+------+-------+---------+
答案 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;