【问题标题】:Can I combine a PIVOT with an Inner join in microsoft SQL server?我可以将 PIVOT 与 Microsoft SQL Server 中的内部联接结合起来吗?
【发布时间】:2011-01-18 21:37:41
【问题描述】:

我有以下 SQL 查询:

SELECT CountryID, [10201] AS CountryGDPPerCapita, [10677] AS LifeExpTotal
FROM
(
    SELECT CountryID,FieldID,numeric 
    FROM globaledge.dbo.DIBS_Data
    WHERE CountryID IN (3,5)
    AND FieldID IN (10201,10677)
    AND year = 2002
)  SourceTable
PIVOT
(
    MAX(numeric)
    FOR FieldID IN ([10201],[10677])
) AS PivotTable
ORDER BY PivotTable.CountryID

这会返回如下所示的内容:

CountryID CountryGDPPerCapita LifeExpTot​​al

3 35985.78 77.24

5 9147.7 74.54

那我还有一个查询如下:

SELECT CountryName, CountryGDP, CountryGDPGrowth 
FROM globaledge.dbo.Country_Statistics 
WHERE CountryID IN (3,5) 
AND year=2002
Order By CountryName

这会产生以下内容:

CountryName CountryGDP CountryGDPGrowth

墨西哥 1567000000000000 1.3

美国 14440000000000000 0.4

另外请注意,我在两个表中都有 CountryID,它们指的是同一个国家。我想要的是创建一个 SQL 查询,可能带有一个 INNER JOIN,它将返回以下内容:

CountryName CountryGDP CountryGDPGrowth CountryGDPPerCapita LifeExpTot​​al

墨西哥 156700000000000000 1.3 35985.78 77.24

美国 144400000000000000 0.4 9147.7 74.54

谁能帮我做这个查询?或者告诉我这是否可能?

【问题讨论】:

    标签: tsql pivot inner-join


    【解决方案1】:

    这样的事情会起作用:

    SELECT 
      a.CountryID, a.CountryName, a.CountryGDP, a.CountryGDPGrowth 
    , b.CountryGDPPerCapita, b.LifeExpTotal
    FROM
    (
        SELECT CountryID, CountryName, CountryGDP, CountryGDPGrowth 
        FROM globaledge.dbo.Country_Statistics 
        WHERE CountryID IN (3,5) 
        AND year=2002
    ) AS a
    JOIN 
    (
        SELECT CountryID, [10201] AS CountryGDPPerCapita, [10677] AS LifeExpTotal
        FROM
        (
            SELECT CountryID,FieldID,numeric 
            FROM globaledge.dbo.DIBS_Data
            WHERE CountryID IN (3,5)
            AND FieldID IN (10201,10677)
            AND year = 2002
        )  SourceTable
        PIVOT
        (
            MAX(numeric)
            FOR FieldID IN ([10201],[10677])
        ) AS PivotTable
    ) AS b ON a.CountryID = b.CountryID
    Order By a.CountryName
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      相关资源
      最近更新 更多