Sql 如何删除重复的datetime并将一个列值转换为新的列名?

Sql 如何删除重复的datetime并将一个列值转换为新的列名?,sql,Sql,我需要像这样的回应 | datetime | id |name | value | -------------------------------------------- | 2020-01-01 | 1 | foo | 23 | -------------------------------------------- | 2020-01-01 | 2 | foo | 24 | ---------------

我需要像这样的回应

| datetime    | id     |name     | value   |
--------------------------------------------
| 2020-01-01  | 1      | foo     | 23      |
--------------------------------------------
| 2020-01-01  | 2      | foo     | 24      |
--------------------------------------------
| 2020-01-02  | 1      | foo     | 43      |
--------------------------------------------
| 2020-01-02  | 2      | foo     | 45      |
到目前为止,我所取得的成就是

datetime   |  1_foo   | 2_foo  |
--------------------------------
2020-01-01 | 23       | 24     |
--------------------------------
2020-01-02 | 43       | 45     |

您可以使用条件聚合:

| datetime    | 1_foo  |2_foo    |
----------------------------------
| 2020-01-01  | 23     | null    |
----------------------------------
| 2020-01-01  | null   | 24      |
----------------------------------
| 2020-01-02  | 43     | null    | 
----------------------------------
| 2020-01-02  | null   | 45      |

我不确定
name
与结果有什么关系。您可能还希望在查询中使用
其中name='foo'

(1)我删除了不一致的数据库标记。请仅使用您正在使用的数据库进行标记。(2) 解释要实现的逻辑。(3) 显示生成您现在得到的结果的查询。感谢您的更新和更正。伟大的学习这里的名字是什么,但你可以把它作为“列名”。我对列名不是很具体。谢谢你的回复
select datetime,
       max(case when id = 1 then value end) as value_1,
       max(case when id = 2 then value end) as value_2
from t
group by datetime;