将计算的jet-sql访问列转换为sql server

Posted

技术标签:

【中文标题】将计算的jet-sql访问列转换为sql server【英文标题】:convert jet-sql access column calculated into sql server 【发布时间】:2018-02-21 13:50:57 【问题描述】:

如何在我的 sql server 列中转换这个计算列 ACCESS?

([VratePctg] < 0.05) Or (Abs([Amount1]) < 1) Or (Abs([Amount2]) < 1)

谢谢

【问题讨论】:

应该仍然可以在 sql server 中工作 T-SQL 没有布尔类型;因此,您无法将 OR 计算为一个值。但是,您可以使用CASE WHEN &lt;condition&gt; THEN 1 ELSE 0 END 来实现相同的目的。巧合的是,其余的语法已经是有效的 T-SQL。 @JeroenMostert 最好将 1 和 0 更改为 convert(1, bit) 以确保类型安全 好的,你会怎么写? ColumnName as CAST(CASE WHEN [VratePctg] &lt; 0.05 Or Abs([Amount1]) &lt; 1 Or Abs([Amount2]) &lt; 1 THEN 1 ELSE 0 END As Bit) 【参考方案1】:

您的问题缺少上下文,但这里是一个具有以下条件的计算列的演示:

CREATE TABLE Demo 
(
    VratePctg decimal(5,2),
    Amount1 int,
    Amount2 int,
    ComputedColumn AS CAST(CASE WHEN [VratePctg] < 0.05 Or Abs([Amount1]) < 1 Or Abs([Amount2]) < 1 THEN 1 ELSE 0 END As Bit)
)

测试:

INSERT INTO Demo(VratePctg, Amount1, Amount2) VALUES 
(0.03, 2, 5),
(0.6, 7, 4),
(0.9, 0, 8),
(4.2, 9, 0)

SELECT *
FROM Demo

结果:

VratePctg   Amount1     Amount2     ComputedColumn
0,03        2           5           True
0,60        7           4           False
0,90        0           8           True
4,20        9           0           True

You can see a live demo on rexteser.

【讨论】:

问题是我必须在两个计算列上进行计算,我必须替换表达式而不是列名。谢谢

以上是关于将计算的jet-sql访问列转换为sql server的主要内容,如果未能解决你的问题,请参考以下文章

windows 2012服务器,sql serve 20112怎么开通1433端口

直通查询如何提高速度?

dbReadTable 将日期列从 SQL 数据库强制转换为字符

T-SQL -- 将逗号分隔的列转换为多列

我想要把sql serve2000的mdf ldf文件升级到能在sql2012中用 求大神帮忙转换

如何执行 SQL 游标转换