基于以日期为标题的列日

编程入门 行业动态 更新时间:2024-10-24 18:16:30
本文介绍了基于以日期为标题的列日的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我从表格中获得了数据,如下所示

I have the data from my table as shown below

╔═════════╦════════════╦═════════════╗ ║ PROD_ID ║ START_DATE ║ TOT_HOURS ║ ╠═════════╬════════════╬═════════════╣ ║ PR220 ║ 19-Sep-17 ║ 0 ║ ║ PR2230 ║ 19-Sep-17 ║ 2 ║ ║ PR9702 ║ 19-Sep-17 ║ 3 ║ ║ PR9036 ║ 19-Sep-17 ║ 0.6 ║ ║ PR9036 ║ 18-Sep-17 ║ 3.4 ║ ║ PR9609 ║ 18-Sep-17 ║ 5 ║ ║ PR91034 ║ 18-Sep-17 ║ 4 ║ ║ PR7127 ║ 18-Sep-17 ║ 0 ║ ╚═════════╩════════════╩═════════════╝

基于START_DATE,是否可以将标题与日期并置为日期?

Based on the START_DATE, could it be possible to have headings with Day concatenated with Date?

预期输出为

╔═════════╦════════════╦════════╦════════╦═══════════╗ ║ PROD_ID ║ START_DATE ║ MON-18 ║ TUE-19 ║ TOT_HOURS ║ ╠═════════╬════════════╬════════╬════════╬═══════════╣ ║ PR220 ║ 19-Sep-17 ║ ║ 0 ║ 0 ║ ║ PR2230 ║ 19-Sep-17 ║ ║ 2 ║ 2 ║ ║ PR9702 ║ 19-Sep-17 ║ ║ 3 ║ 3 ║ ║ PR9036 ║ 19-Sep-17 ║ ║ 0.6 ║ 0.6 ║ ║ PR9036 ║ 18-Sep-17 ║ 3.4 ║ ║ 3.4 ║ ║ PR9609 ║ 18-Sep-17 ║ 5 ║ ║ 5 ║ ║ PR91034 ║ 18-Sep-17 ║ 4 ║ ║ 4 ║ ║ PR7127 ║ 18-Sep-17 ║ 0 ║ ║ 0 ║ ╚═════════╩════════════╩════════╩════════╩═══════════╝

表结构和数据

CREATE TABLE PROD_TIMINGS ( PROD_ID VARCHAR2(12 BYTE), START_DATE DATE, TOT_HOURS NUMBER ); SET DEFINE OFF; Insert into PROD_TIMINGS (PROD_ID, START_DATE, TOT_HOURS) Values ('PR220', TO_DATE('09/19/2017 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 0); Insert into PROD_TIMINGS (PROD_ID, START_DATE, TOT_HOURS) Values ('PR2230', TO_DATE('09/19/2017 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 2); Insert into PROD_TIMINGS (PROD_ID, START_DATE, TOT_HOURS) Values ('PR9702', TO_DATE('09/19/2017 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 3); Insert into PROD_TIMINGS (PROD_ID, START_DATE, TOT_HOURS) Values ('PR9036', TO_DATE('09/19/2017 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 0.6); Insert into PROD_TIMINGS (PROD_ID, START_DATE, TOT_HOURS) Values ('PR9036', TO_DATE('09/18/2017 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 3.4); Insert into PROD_TIMINGS (PROD_ID, START_DATE, TOT_HOURS) Values ('PR9609', TO_DATE('09/18/2017 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 5); Insert into PROD_TIMINGS (PROD_ID, START_DATE, TOT_HOURS) Values ('PR91034', TO_DATE('09/18/2017 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 4); Insert into PROD_TIMINGS (PROD_ID, START_DATE, TOT_HOURS) Values ('PR7127', TO_DATE('09/18/2017 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 0); COMMIT;

推荐答案

并非不使用动态SQL进行查询.

Not without using dynamic SQL to make the query.

但是,如果您愿意对值进行硬编码,那么:

But if you are willing to hardcode the values then:

SQL小提琴

Oracle 11g R2架构设置:

CREATE TABLE PROD_TIMINGS( PROD_ID, START_DATE, TOT_HOURS ) AS SELECT 'PR220', DATE '2017-09-19', 0 FROM DUAL UNION ALL SELECT 'PR2230', DATE '2017-09-19', 2 FROM DUAL UNION ALL SELECT 'PR9702', DATE '2017-09-19', 3 FROM DUAL UNION ALL SELECT 'PR9036', DATE '2017-09-19', 0.6 FROM DUAL UNION ALL SELECT 'PR9036', DATE '2017-09-18', 3.4 FROM DUAL UNION ALL SELECT 'PR9609', DATE '2017-09-18', 5 FROM DUAL UNION ALL SELECT 'PR91034', DATE '2017-09-18', 4 FROM DUAL UNION ALL SELECT 'PR7127', DATE '2017-09-18', 0 FROM DUAL;

查询1 :

SELECT PROD_ID, START_DATE, CASE START_DATE WHEN DATE '2017-09-18' THEN TOT_HOURS END AS "MON-18", CASE START_DATE WHEN DATE '2017-09-19' THEN TOT_HOURS END AS "TUE-19", TOT_HOURS FROM PROD_TIMINGS

结果 :

Results:

| PROD_ID | START_DATE | MON-18 | TUE-19 | TOT_HOURS | |---------|----------------------|--------|--------|-----------| | PR220 | 2017-09-19T00:00:00Z | (null) | 0 | 0 | | PR2230 | 2017-09-19T00:00:00Z | (null) | 2 | 2 | | PR9702 | 2017-09-19T00:00:00Z | (null) | 3 | 3 | | PR9036 | 2017-09-19T00:00:00Z | (null) | 0.6 | 0.6 | | PR9036 | 2017-09-18T00:00:00Z | 3.4 | (null) | 3.4 | | PR9609 | 2017-09-18T00:00:00Z | 5 | (null) | 5 | | PR91034 | 2017-09-18T00:00:00Z | 4 | (null) | 4 | | PR7127 | 2017-09-18T00:00:00Z | 0 | (null) | 0 |

更多推荐

基于以日期为标题的列日

本文发布于:2023-10-18 23:54:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1505794.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:列日   日期   标题

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!