水平输出 sql 数据
Outputting sql data horizontally
没关系..我在 Oracle 10g 上,这意味着 none 较新 Oracle 版本或其他 SQL 版本的简单连接函数可以使用。
我正在查看在一列 (process_date) 中有重复项的 table(工资单)。数据库是 Oracle 数据库。
例如table工资单:
Yr | Week | Process_date
15 53 12/19/2015
15 52 12/19/2015
15 51 12/7/2015
我希望输出到 return 具有相同处理日期且周数在同一行的周
Yr | Week 1| Week 2 | Process_date
15 53 52 12/19/2015
我试过各种子选择和连接,但都做不好。
编辑:添加了详细信息
EDIT2:结束话题
SELECT Yr, GROUP_CONCAT(Week SEPARATOR ',') Weeks, Process_date
FROM payroll
GROUP BY Yr, Process_date;
这将为您提供以下输出:
Yr | Weeks | Process_date
15 53,52 12/19/2015
如果你必须在单独的列中获取它们,你可能需要一个子查询如下。如果您只有一周而不是两周,此查询将无法正常工作。
SELECT Yr, SUBSTRING_INDEX(SUBSTRING_INDEX(Weeks, ',', 1), ',', -1) Week1,
SUBSTRING_INDEX(SUBSTRING_INDEX(Weeks, ',', 2), ',', -1) Week2, Process_date
FROM
(SELECT Yr, GROUP_CONCAT(Week SEPARATOR ',') Weeks, Process_date
FROM payroll
GROUP BY Yr, Process_date) merged_payroll;
输出:
Yr | Weeks | Process_date
15 53,52 12/19/2015
15 51,51 12/7/2015 (DUPLICATED 51)
参考:(1)How to use GROUP_CONCAT in a CONCAT in MySQL (2) Split value from one field to two
没关系..我在 Oracle 10g 上,这意味着 none 较新 Oracle 版本或其他 SQL 版本的简单连接函数可以使用。
我正在查看在一列 (process_date) 中有重复项的 table(工资单)。数据库是 Oracle 数据库。
例如table工资单:
Yr | Week | Process_date
15 53 12/19/2015
15 52 12/19/2015
15 51 12/7/2015
我希望输出到 return 具有相同处理日期且周数在同一行的周
Yr | Week 1| Week 2 | Process_date
15 53 52 12/19/2015
我试过各种子选择和连接,但都做不好。
编辑:添加了详细信息 EDIT2:结束话题
SELECT Yr, GROUP_CONCAT(Week SEPARATOR ',') Weeks, Process_date
FROM payroll
GROUP BY Yr, Process_date;
这将为您提供以下输出:
Yr | Weeks | Process_date
15 53,52 12/19/2015
如果你必须在单独的列中获取它们,你可能需要一个子查询如下。如果您只有一周而不是两周,此查询将无法正常工作。
SELECT Yr, SUBSTRING_INDEX(SUBSTRING_INDEX(Weeks, ',', 1), ',', -1) Week1,
SUBSTRING_INDEX(SUBSTRING_INDEX(Weeks, ',', 2), ',', -1) Week2, Process_date
FROM
(SELECT Yr, GROUP_CONCAT(Week SEPARATOR ',') Weeks, Process_date
FROM payroll
GROUP BY Yr, Process_date) merged_payroll;
输出:
Yr | Weeks | Process_date
15 53,52 12/19/2015
15 51,51 12/7/2015 (DUPLICATED 51)
参考:(1)How to use GROUP_CONCAT in a CONCAT in MySQL (2) Split value from one field to two