【发布时间】:2011-06-21 14:41:16
【问题描述】:
您好,我有一个访问查询,谁能帮我把查询转换为 MS SQL 2008 查询。
与Transform 和PIVOT 斗争。
访问查询是:
TRANSFORM Count(vwg_vkCustomers.CustomerNo) AS CountOfCustomerNo
SELECT vwg_vkCustomers.ClassID, vwg_vkCustomers.SubjectTypeID, vwg_vkCustomers.TutorCode
FROM vwg_vkCustomers
WHERE (((vwg_vkCustomers.TutorCode)="123456") AND ((vwg_vkCustomers.CustomerAdded)>#6/21/2011#))
GROUP BY vwg_vkCustomers.ClassID, vwg_vkCustomers.SubjectTypeID, vwg_vkCustomers.TutorCode
PIVOT vwg_vkCustomers.Type;
谢谢
【问题讨论】:
-
你觉得必须在什么环境下转换它?
-
@David-W-Fenton:我需要在 SQL Server 数据库而不是 Access 上使用它...
-
前端是什么?使用权?如果是这样,并且您正确使用了 ODBC 链接表,您可能根本不需要更改它——Jet/ACE 和 ODBC 会为您将其转换为 SQL Server 可以正确解释的东西。
-
@David-W-Fenton:这个查询是用 Access 编写的,但后端是 SQL Server,我试图在 SQL Server 中编写类似的查询,但我发现 SQL Server 中的 PIVOT不是很好。您必须在 Query 中定义列,这意味着如果您不知道列数或它们不同,则不能使用 PIVOT。在 SQL Server PIVOT 中,仅在您确切知道 SUN、MON、TUE、WED、THU、FRI、SAT 等列数的情况下才有用。
-
如果您是从 Access 执行它,为什么要重写它? Access 通过 ODBC 向 SQL Server 发送的内容是否会产生错误的结果?慢吗?如果这些都不是,您为什么觉得需要将其转换为 T-SQL?
标签: sql sql-server sql-server-2005 sql-server-2008 ms-access