【发布时间】:2014-08-14 08:43:23
【问题描述】:
我是 sql server 的新手,过去几天我一直在尝试将 Access 中的简单 TRANSFORM 查询转换为 SQL Server。
在访问中查询看起来像:
TRANSFORM tblDefHolidays.colDate
SELECT tblDefHolidays.colDate
FROM tblDefHolidays
WHERE tblDefHolidays.colDate >= DateAdd ("d", -60, date())
AND tblDefHolidays.colDate <= DateAdd ("yyyy",2, date())
GROUP BY tblDefHolidays.colDate
ORDER BY tblDefHolidays.colCal DESC
PIVOT tblDefHolidays.colCal;
在 SQL Server 中,表 tblDefHolidays 定义如下:
colCal nvarchar(40)
colDate date
colCodeBB nvarchar(20)
colDesc nvarchar(255)
这是我当前未运行的 SQL Server 查询。
SELECT colDate, colCal
FROM
(
SELECT dbo.tblDefHolidays.colDate, dbo.tblDefHolidays.colCal
FROM dbInv.dbo.tblDefHolidays) as [subTable]
PIVOT
( max(colDate)
FOR dbInv.dbo.tblDefHolidays.colCal
IN ([OSAKA],[LIFFE],[HKEX],[EUREX],[CME],[CBOE])
) as [pivotTable]
运行当前的 sql server 查询时,我得到:
Msg 107, Level 15, State 1, Line 9 列前缀 “dbInv.dbo.tblDefHolidays”与表名或别名不匹配 查询中使用的名称。消息 207,级别 16,状态 1,行 2 无效 列名“colDate”。
结果(来自 Access)应如下所示:
colDate OSAKA LIFFE HKEX EUREX CME CBOE
7/1/2014 7/1/2014
7/4/2014 7/4/2014 7/4/2014
7/21/2014 7/21/2014
8/25/2014 8/25/2014
9/1/2014 9/1/2014 9/1/2014
9/9/2014 9/9/2014
9/15/2014 9/15/2014
9/23/2014 9/23/2014
10/1/2014 10/1/2014
感谢阅读。
最好的,
手动
【问题讨论】:
-
“不运行”是什么意思?您有任何错误信息要与我们分享吗? 您在哪里选择透视列? (您在外部查询中列出了原始字段而不是透视字段)
标签: sql sql-server database ms-access pivot