【发布时间】:2011-04-28 02:07:21
【问题描述】:
我有两个表定义如下:
User (ID int, name varchar)
Hours (UserID int, [date] date, hours float)
现在我可以像这样执行连接以获取每个人的小时数:
SELECT U.ID, U.Name, H.[date], H.Hours
FROM Users U
LEFT JOIN Hours H ON U.ID = H.UserID
WHERE H.Date > '2011-01-01'
AND H.Date < '2011-02-01'
这会给我一个包含以下列(以及日期范围之间)的结果集:
ID, Name, Date, Hours
我想做的是更改输出列,使其看起来更像电子表格:
ID, Name, 2011-01-01, 2011-01-02, 2011-01-03 ..... 2011-01-31
以及具有正确小时值的相应列。
这可能吗?
【问题讨论】:
-
简短的回答是,如果不使用动态 SQL,您将无法在 T-SQL 中执行此操作,这暗示着根本不应该在 T-SQL 中执行此操作。相反,您应该在中间层或报告引擎中的 T-SQL 之外构建查询。
标签: sql sql-server tsql sql-server-2008 pivot