谁能帮我将 Access Query 转换为 MS SQL Query

Posted

技术标签:

【中文标题】谁能帮我将 Access Query 转换为 MS SQL Query【英文标题】:Can anyone help me to convert Access Query to MS SQL Query 【发布时间】:2011-06-21 14:41:16 【问题描述】:

您好,我有一个访问查询,谁能帮我把查询转换为 MS SQL 2008 查询。

TransformPIVOT 斗争。

访问查询是:

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? 【参考方案1】:

我不知道 IIF 的 T-SQL 版本,但这是不使用 TRANSFORM/PIVOT 的交叉表查询的 Access 版本。对所需的每一列重复 IIF 表达式:

SELECT vwg_vkCustomers.ClassID, vwg_vkCustomers.SubjectTypeID, vwg_vkCustomers.TutorCode,
Sum(IIF(vwg_vkCustomers.Type="Whatever",1,0) AS TypeWhatever 
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

【讨论】:

【参考方案2】:

将此与 TimD 的答案结合起来,因为我不经常与 TRANSFORM 争吵......

对于Iif,使用CASE

...
CASE vwg_vkCustomers.Type
WHEN 'Whatever' 1
ELSE 0
END,
...

请注意,您使用单引号而不是双引号。

【讨论】:

@Scorpion,看看这个:msdn.microsoft.com/en-us/library/ms177410.aspx

以上是关于谁能帮我将 Access Query 转换为 MS SQL Query的主要内容,如果未能解决你的问题,请参考以下文章

帮我将给 ms 访问查询转换为 MySQL 查询?

将 MS Access 迁移到 PostgreSQL [关闭]

谁能帮我把XML文件转换为XSD和XSL文件?

将 MS Access 报告导入 C#

C语言:怎么将十进制数字转换为二进制字符串,谁能帮我写个函数

谁能帮我如何在 sqlite3 数据库中保存图像?