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 LifeExpTotal
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 LifeExpTotal
墨西哥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)
| 归档时间: |
|
| 查看次数: |
17376 次 |
| 最近记录: |