繁体   English   中英

如何基于ROWID以特定格式输出SQL数据库

[英]How to output SQL Database in a specific format based on the ROWID

我试图尝试的是从数据库中选择信息,并按ROWID将其分组并输出。

我的表结构

CREATE TABLE PROJECT_RECORDS (
 RECORDS_ROWID number(3) not null,
 RECORDS_LISTCOLUMNID number (3) not null,
 RECORDS_RECORDVALUE varchar2 (25)
);

样本数据

RECORDS_ROWID RECORDS_LISTCOLUMNID  RECORDS_RECORDVALUE   

    1                    1          First Row                    
    1                    2          First Row Description    
    1                    3          First Row Date        
    2                    1          Second Row                      
    2                    2          Second Row Description          
    2                    3          Second Row Date  
    3                    1          Third Row  
    3                    2          Third Row Description   
    3                    3          Third Row Date 

我希望它如何显示

 - First Row    - First Row Description   - First Row Data
 - Second Row   - Second Row Description  - Second Row Date
 - Third Row    - Third Row Description   - Third Row Date

任何帮助将不胜感激

可以做到这一点,尽管它并不优雅并且具有硬编码的值,但这是一个起点!
它在MS SQL中,但是在方言方面并没有什么异常。
您可以在这里使用它: http : //sqlfiddle.com/#!3/d4875/9

SELECT
  (SELECT RECORDS_RECORDVALUE FROM PROJECT_RECORDS pr2
   WHERE pr2.RECORDS_LISTCOLUMNID=1
     AND pr1.RECORDS_ROWID=pr2.RECORDS_ROWID
  ) AS col1,
  (SELECT RECORDS_RECORDVALUE FROM PROJECT_RECORDS pr2
   WHERE pr2.RECORDS_LISTCOLUMNID=2
     AND pr1.RECORDS_ROWID=pr2.RECORDS_ROWID
  ) AS col2,
  (SELECT RECORDS_RECORDVALUE FROM PROJECT_RECORDS pr2
   WHERE pr2.RECORDS_LISTCOLUMNID=3
     AND pr1.RECORDS_ROWID=pr2.RECORDS_ROWID
  ) AS col3
FROM 
  PROJECT_RECORDS pr1
GROUP BY RECORDS_ROWID

比AjV更快一点的解决方案

SQLFIDDLE示例

SELECT 
 MAX(CASE WHEN RECORDS_LISTCOLUMNID = 1
       THEN RECORDS_RECORDVALUE
       ELSE '' END)  AS col1,
 MAX(CASE WHEN RECORDS_LISTCOLUMNID = 2
       THEN RECORDS_RECORDVALUE
       ELSE '' END) AS col2,
 MAX(CASE WHEN RECORDS_LISTCOLUMNID = 3
       THEN RECORDS_RECORDVALUE
       ELSE '' END) AS col3
FROM PROJECT_RECORDS
GROUP BY RECORDS_ROWID

结果:

|       COL1 |                   COL2 |            COL3 |
|------------|------------------------|-----------------|
|  First Row |  First Row Description |  First Row Date |
| Second Row | Second Row Description | Second Row Date |
|  Third Row |  Third Row Description |  Third Row Date |

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM