我正在尝试找到一种根据 ID 号合并不同行的方法。
这是一组示例行:
ID |status |Time
12345| 4 | 1:23
12345| 2 | 2:30
12345| 6 | 2:40
12345| 9 | 3:00
这些 ID 是相同的,因此我想以某种方式将它们组合在一起,但仍会显示每个状态的单独时间。我是这样想的:
ID | Status 2 | Status 2 Time | Status 4 | Status 4 time | etc
12345| 2 | 2:30 | 4 | 1:23 | etc
这可能吗?如果有另一种方法连接这些 ID 会更容易,那也很棒。谢谢!
最佳答案
因此,当可用状态仅在集合 4、2、6 或 9 中时,这将对您的数据进行透视。如果您不知道此列中有哪些值,则需要构建并执行透视动态sql。在堆栈溢出中有这样的例子。
-------------------------
--test data schema
DECLARE @tempdata as TABLE(ID int, [status] int, [time] time)
insert into @tempdata values
(12345, 4, '1:23'),
(12345, 2, '2:30'),
(12345, 6, '2:40'),
(12345, 9, '3:00'),
-- some extra data to show what happens with another id
(12346, 4, '6:23'),
(12346, 2, '7:30'),
(12346, 6, '7:40'),
(12346, 9, '8:00')
-------------------------
--The query
SELECT *
FROM
(SELECT * FROM @tempdata) t
PIVOT
(MIN([time])
FOR [status] in ([4],[2],[6],[9])) as pvt
关于sql按ID组合行,保留信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50029622/