Sql server 将计算的jet sql access列转换为sql server
如何在我的sql server列中转换此计算列访问权限Sql server 将计算的jet sql access列转换为sql server,sql-server,tsql,ms-access,jet-sql,Sql Server,Tsql,Ms Access,Jet Sql,如何在我的sql server列中转换此计算列访问权限 ([VratePctg] < 0.05) Or (Abs([Amount1]) < 1) Or (Abs([Amount2]) < 1) ([VratePctg]
([VratePctg] < 0.05) Or (Abs([Amount1]) < 1) Or (Abs([Amount2]) < 1)
([VratePctg]<0.05)或(Abs([Amount1])<1)或(Abs([Amount2])<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)
)
结果:
VratePctg Amount1 Amount2 ComputedColumn
0,03 2 5 True
0,60 7 4 False
0,90 0 8 True
4,20 9 0 True
应该仍然在sql Server中工作的sql没有布尔类型;因此,您无法将
或
计算为一个值。但是,您可以在1 ELSE 0 END时使用CASE来实现相同的效果。幸运的是,其余的语法已经是有效的T-SQL。@Jeroenmoster最好将1和0更改为convert(1,bit)
以确保类型安全OK以及如何编写它?ColumnName as CAST(如果[VratePctg]<0.05或Abs([Amount1])<1或Abs([Amount2])<1,则1以位结束)
问题是我必须对两个计算列进行计算,我必须替换表达式而不是列名。非常感谢。
VratePctg Amount1 Amount2 ComputedColumn
0,03 2 5 True
0,60 7 4 False
0,90 0 8 True
4,20 9 0 True