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 查询迁移的主要内容,如果未能解决你的问题,请参考以下文章
查询在具有本地表的原始数据库中运行,但在表迁移到 SQL Server 时不运行 - 错误:“定义的字段过多”
使用 Visual Studio 2012 和 SQL Server Management Studio 2012 运行 SQL Server CE 4 查询