sql按ID组合行,保留信息

标签 sql sql-server group-by row

我正在尝试找到一种根据 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/

相关文章:

mysql - 表上的 (SQL) JOINING 是否始终会创建这些表的笛卡尔积?

PHP MYSQL 函数有效,但在添加额外参数时中断

java - 如何在Java中使用executeQuery()获取返回值?

c# - 如何在 MS SQL Server 2014 中创建新的数据类型?

python - 我如何通过 Pandas 分组来获得总和?

python - Pandas 计数正/负/中性值

sql - mysql中的数组变量

sql-server - 当sql server 2005中的try catch捕获错误时如何防止事务回滚

sql-server - 我可以定义在构建 mssql 全文索引时使用哪些分词器吗?

sql - 多案例结果与分组依据