表字段值到列(T-SQL)

时间:2013-12-09 23:28:25

标签: sql sql-server tsql pivot

我知道,有类似的问题,但我无法理解。我希望,你会帮助我理解=) 我有3张桌子:

  1. 联系(int ID, nvarchar Name)
  2. 城市(int ID, nvarchar Name, int ContCount)
  3. 地址(int ID, int CityID, int ContactID, int Year)
  4. 我需要制作一个这样的表:

    City | 2010 | 2011 | 2012 | 2013 |
     LA  |  201 |  231 |  198 |  211 |
    

    2010-2013 - Address.Year和{201,231,198,211}的值来自City.ContCount 是用SQL做某种方式吗?如果是,你能告诉我它=)我会非常感激) 我是SQL的新手,所以即使是简单的问题对我来说也很难。)

1 个答案:

答案 0 :(得分:1)

你正试图在Sql中创建一个二维数组,这很棘手。我知道它并不是你所要求的,但最简单的解决办法就是像这样一个小组这样做

SELECT Year, City, Count(*)
FROM Address a
JOIN City c ON a.CityID = c.CityID
GROUP BY Year, City

会给你

City, Year, Count
LA, 2010, 201
LA, 2011, 231
...

这将允许您转动此数据(例如,在excel中)以获得所需内容。

在T-SQL中还有一个透视选项解释here