代码:
CREATE TABLE table1 (
day DATE,
name VARCHAR(40)
);
INSERT INTO table1 (day, name)
VALUES
('2018-01-01', 'test1'),
('2018-01-01', 'test2'),
('2018-01-01', 'example'),
('2018-01-01', 'somevalue'),
('2018-01-02', 'test3'),
('2018-01-03', 'test4');
我想把结果分成:
day - name1 - name2 - namex
DATE - value - value - value
而不是在选择数据时复制日期。
预期结果:
day - name - name - name - name ...
2018-01-01 - test1 - test2 - example - somevalue
2018-01-02 - NULL - NULL - NULL - NULL - test3
sql小提琴
3条答案
按热度按时间sigwle7e1#
您可以通过动态sql来实现这一点,例如,首先查找不同的名称值,然后围绕它们构建其余的代码
鉴于
生成此代码
当运行
使用动态sql的优点是,它非常容易出错,并且忘记了代码将捕获的任何新值。不过,要注意团体的限制。
像这样执行动态sql-
6psbrbz92#
在这段代码中,您按日期和名称分组,并按升序排序
检查图像
des4xlb03#
您可以使用groupby和groupconcat来执行此操作,如下所示