返回数据计算结果的 SQL 语法
Posted
技术标签:
【中文标题】返回数据计算结果的 SQL 语法【英文标题】:SQL Syntax for calculating results of returned data 【发布时间】:2009-02-04 15:36:02 【问题描述】:我正在尝试对从 SQL Server 返回的一些数据执行简单的计算:
SELECT val1X, val1Y, val2X, val2Y FROM myTable
我希望能够根据返回的值计算以下内容并只返回一个值 - 下面的计算结果(这最初是用 VB6 编写的):
If IsNull(val1X) Or IsEmpty(val1X) Then val1X = 0
If IsNull(val1Y) Or IsEmpty(val1Y) Then val1Y = 0
If IsNull(val2X) Or IsEmpty(val2X) Then val2X = 0
If IsNull(val2Y) Or IsEmpty(val2Y) Then val2Y = 0
res1 = (val1X ^ 2) + (val1Y ^ 2)
res2 = (val2X ^ 2) + (val2Y ^ 2)
ResultVal = Sqr(IIf(res1 > res2, res1, res2))
只是想知道最好的方法是什么?
谢谢
【问题讨论】:
【参考方案1】:您可以在 SQL 中的一条语句中完成所有操作,但它看起来有点难看,因为您必须重复块:
SELECT
CASE WHEN
/* res1 */ Power(IsNull(val1X, 0), 2) + Power(IsNull(val1Y, 0), 2)
> /* res2 */ Power(IsNull(val2X, 0), 2) + Power(IsNull(val2Y, 0), 2)
THEN
/* res1 */ Power(IsNull(val1X, 0), 2) + Power(IsNull(val1Y, 0), 2)
ELSE
/* res2 */ Power(IsNull(val2X, 0), 2) + Power(IsNull(val2Y, 0), 2)
END
FROM
myTable
使用用户定义的函数来包装 Power(IsNull(field, 0), 2) 会更简洁一些,这样您就不会重复太多,但我将其保留为运动给你做。 :)
【讨论】:
太好了,谢谢。最后一个问题,如何指定列名? 已解决,我只是在SELECT语句末尾使用了“AS columnname”。以上是关于返回数据计算结果的 SQL 语法的主要内容,如果未能解决你的问题,请参考以下文章