【发布时间】:2014-02-02 23:30:58
【问题描述】:
这是我的表结构和一些数据:
CREATE TABLE Travel
(
ID int primary key,
Name nvarchar(25),
City nvarchar(25),
Month varchar(3)
)
INSERT INTO Travel
(ID, Name, City, Month)
VALUES
(1, 'Name1', 'Paris','Jan'),
(2, 'Name1', 'Rome','Feb'),
(3, 'Name2', 'Italy','Jan'),
(4, 'Name2', 'Rome','Feb'),
(5, 'Name3', 'Los Angeles','Jan'),
(6, 'Name3', 'New York','Feb');
谁能帮我写出非 Pivot 版本以仅在有数据时返回“月”列(假设数据库在 SQL Server 2005 之前)。
这是一个示例查询,但它返回 NULL 数据列(4 月、5 月)
SELECT Name,
max(CASE WHEN MONTH = 'Jan' THEN City END) Jan,
max(CASE WHEN MONTH = 'Feb' THEN City END) Feb,
max(CASE WHEN MONTH = 'Mar' THEN City END) Mar,
max(CASE WHEN MONTH = 'Apr' THEN City END) Apr,
max(CASE WHEN MONTH = 'May' THEN City END) May
FROM Travel
GROUP BY Name
NAME JAN FEB MAR APR MAY
Name1 Paris Rome (null) (null) (null)
Name2 Italy Rome (null) (null) (null)
Name3 Los Angeles New York (null) (null) (null)
另外,查询的 PIVOT 版本是什么,因为没有聚合列的函数?
【问题讨论】:
标签: sql-server-2005 pivot pivot-table