【问题标题】:How to customize SQL query result (select in select)如何自定义SQL查询结果(select in select)
【发布时间】:2017-02-18 13:41:45
【问题描述】:

这可能是一个非常简单的解决方案,但我挣扎了几个小时没有任何结果。让我举例说明我的问题。我有一张桌子:

productID|attributeID|attributeValue
001      | a01       | value1
001      | a02       | value2
002      | a01       | value2_1
002      | a02       | value2_2

我尝试过使用这个查询代码:

SELECT 
    productID, 
    attributeValue,
    NEW_attributeValue = (SELECT attributeValue 
                          FROM table1 
                          WHERE attributeID = 'a02')
FROM 
    table1
WHERE 
    attributeID = 'a01'

以上查询代码只是我的构想。代码失败,因为第二个子查询有多个结果。你知道如何收到这个结果吗:

001 | value1   | value2
002 | value2_1 | value2_2

【问题讨论】:

    标签: sql select subquery


    【解决方案1】:

    一个简单的方法是条件聚合

    select productId,
           max(case when attributeID = 'a01' then attributeValue end) as a01,
           max(case when attributeID = 'a02' then attributeValue end) as a02
    from t
    group by productId;
    

    【讨论】:

      【解决方案2】:

      对列属性ID 使用数据透视表概念

      【讨论】:

        【解决方案3】:

        试试这个:-

        SELECT u.productID, 
            u.attributeValue,
            NEW_attributeValue = (SELECT attributeValue FROM table1 WHERE productID = u.productID and attributeID = 'a02')
        
            FROM table1 AS u
            WHERE attributeID = 'a01'
        

        但最好使用条件聚合

        【讨论】:

          【解决方案4】:

          使用 PIVOT 看起来像这样:

          SELECT *
              FROM (
                  SELECT productID, attributeID, attributeValue
                      FROM table1
              ) AS SourceTable
              PIVOT (
                  MAX([attributeValue]) 
                  FOR [attributeID] IN ([a01], [a02])
              ) AS PivotTable;
          

          SQL Fiddle Example Here

          【讨论】:

            猜你喜欢
            • 2011-12-15
            • 2018-06-08
            • 2015-02-07
            • 1970-01-01
            • 2020-04-08
            • 2013-01-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多