SQL server 2012 查询迁移

Posted

技术标签:

【中文标题】SQL server 2012 查询迁移【英文标题】:SQL server 2012 Query migration 【发布时间】:2015-03-29 13:20:56 【问题描述】:

我想将 MS Access 查询迁移到 SQL Server 2012。

我已迁移查询。在 MS Access 查询中,我有一些计算和条件。我的问题是如何在 SQL Server 中使用 when 语句?

这是来自 MS Access 查询的计算代码。如何将此代码转换为 SQL Server?

Piece!Quatite*Commande!Prixunitaire+Wenn(Artikel!Prix<>0;(Artikel!prix*((Artikel!PST*1,01-Artikel!TVS)/100))/1000*[Quantite];0))

【问题讨论】:

您遇到的实际问题是什么?到目前为止你做了什么? 问题是如何在sql server中使用iif语句, sql server 中的代码看起来像注释,我在此再次发布 sql server 中的代码 'dbo.Tabelle1!Quantite*dbo.Tabelle2!Prixunitaire + iif (dbo.Tabelle_1!prix0 然后 dbo.Tabelle1!prix * ((dbo.tabelle1!TVS * 1,01 - Tabelle!VKR) / 100) / 1000 * dbo.Tabelle2.Quantite, 0 )' 你可以用case语句代替iff。 【参考方案1】:

我猜wenn()iff()。如果是这样:

(Piece.Quatite * Commande.Prixunitaire) +
(case when Artikel.Prix <> 0
      then Artikel.prix *((Artikel.PST*1.01-Artikel.TVS) / 100)) /1000 [Quantite]
      else 0
 end)

但是,我不清楚这个逻辑到底在做什么,因为如果 Artikel.Prix 为 0,则该值将为 0。如果您只是检查 NULL 值,则可以使用 coalesce()

(Piece.Quatite * Commande.Prixunitaire) +
coalesce(Artikel.prix *((Artikel.PST*1.01-Artikel.TVS) / 100)) /1000 [Quantite], 0)

【讨论】:

以上是关于SQL server 2012 查询迁移的主要内容,如果未能解决你的问题,请参考以下文章

从 Access 迁移到 SQL Server 数据库

查询在具有本地表的原始数据库中运行,但在表迁移到 SQL Server 时不运行 - 错误:“定义的字段过多”

SQL Server 2012 查询混乱

使用 Visual Studio 2012 和 SQL Server Management Studio 2012 运行 SQL Server CE 4 查询

SQL Server 2012 查询 - 按 [重复] 分组

SQL Server 2012 从 SQL 查询创建用户