首页 > 解决方案 > 如何在具有不同参数和别名的列中执行 SELECT?

问题描述

我想从这个表中创建一个报告。我需要从同一列中的不同参数获取数据。

ID_NUMBER     ID_DOCUMENT     DOCUMENT_NAME
     A001               1           DOC_A_1
     A001               2           DOC_A_2
     A001               3           DOC_A_3
     B001               1           DOC_B_1
     B001               3           DOC_B_3

SELECT 参数为 1 和 2

然后,SELECT 输出应该是:

ID_NUMBER     DOCUMENT_1     DOCUMENT_2
     A001        DOC_A_1        DOC_A_2
     B001        DOC_B_1           NULL

我当前的查询:

SELECT 
   tdoc_1.ID_NUMBER, 
   tdoc_1.DOCUMENT_NAME AS "DOCUMENT_1" 
FROM `document` 'tdoc_1'

LEFT OUTER JOIN (
  SELECT 
     tdoc_1.ID_NUMBER,
     tdoc_2.DOCUMENT_NAME AS "DOCUMENT_2" 
  FROM `document` 'tdoc_2' 
  WHERE `ID_DOCUMENT` = '2'
) temp_doc ON tdoc_1.ID_NUMBER = temp_doc.ID_NUMBER
WHERE ID_NUMBER = 1

列中的数据很大,所以,最好有一个快速查询

标签: mysqlsql

解决方案


您只需要在此处进行一些带有旋转逻辑的聚合:

SELECT
    ID_NUMBER,
    MAX(CASE WHEN ID_DOCUMENT = 1 THEN DOCUMENT_NAME END) AS DOCUMENT_1,
    MAX(CASE WHEN ID_DOCUMENT = 2 THEN DOCUMENT_NAME END) AS DOCUMENT_2
FROM document
GROUP BY
    ID_DOCUMENT
ORDER BY
    ID_DOCUMENT;

如果您希望文档列灵活,那么您将需要一些动态 SQL。它不能被硬编码。


推荐阅读