我可以在微软SQL服务器中将PIVOT与内部联接组合使用吗?

adh*_*lon 4 t-sql pivot inner-join

我有以下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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

产生以下内容:

CountryName CountryGDP CountryGDPGrowth

墨西哥1567000000000000 1.3

美国144400000000000 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

任何人都可以帮我做这个查询吗?或告诉我是否可能?

Pet*_*hia 11

像这样的东西会起作用:

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
Run Code Online (Sandbox Code Playgroud)