SQL Server 视图中的条件计算列

Posted

技术标签:

【中文标题】SQL Server 视图中的条件计算列【英文标题】:Conditional Computed Columns in SQL Server Views 【发布时间】:2013-06-29 00:00:04 【问题描述】:

我正在尝试使用以下查询从现有表 Students 创建 SQL Server 2008 视图:

SELECT Std_ID, 
       Name, 
       Sub1, 
       Sub2, 
       IIf ((Sub1 + Sub2)>160, 'A',
       IIf ((Sub1 + Sub2)>100, 'B','C')) AS Legend 
FROM  dbo.Student

它给了我下面提到的错误。

函数参数列表中的错误:“>”无法识别。 无法解析查询文本。

我希望视图具有计算列Legend。查询在查询设计器中完美执行,但无法创建视图。请指教。

【问题讨论】:

【参考方案1】:

IIF 是 SQL Server 2012 中的一项新功能 (http://www.mssqltips.com/sqlservertip/2570/new-logical-functions-in-sql-server-2012-iif-and-choose/)。你不能在 2012 年设计并期望它在 2008 年发挥作用。

【讨论】:

【参考方案2】:

试试这个?

   SELECT 
     Std_ID, 
     Name, 
     Sub1, 
     Sub2, 
     Legend = 
           case 
             when Sub1 + Sub2 > 160 then 'A'
             when Sub1 + Sub2 > 100 then 'B'
             else 'C'
           end
    FROM  dbo.Student

【讨论】:

以上是关于SQL Server 视图中的条件计算列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 中的 OR 条件中确定优先级

如果在SQL Server中只有序列形式,我想计算名称列中的值[重复]

用于计算同一列的值百分比的 SQL [关闭]

sql2005 中的把2个表创建成一个视图

查询以计算 Sql Server 视图中的列数

多列条件计数 SQL