【问题标题】:How to assign string values to numeric values in a SQL View如何在 SQL 视图中将字符串值分配给数值
【发布时间】:2014-04-08 09:20:52
【问题描述】:

基本上我有一个测试用例场景,我需要将计算的百分比分配给文本值。例如。

这是我的代码的相关部分,它根据提交的作业数量将值提取为百分比。

Select *...
    100 * COUNT(CASE TurnedIn WHEN 1 THEN 1 ELSE NULL END) 
                             / COUNT(TurnedIn) AS Percentage, 
From Table1
When ...

我试过用一个箱子来包装这个,比如

Case when (100 * COUNT(CASE TurnedIn WHEN 1 THEN 1 ELSE NULL END) 
                             / COUNT(TurnedIn)) <= 80  Then 'B' As LetterGrade 

但到目前为止还没有运气。

【问题讨论】:

  • 您能展示一下视图/表格结构吗?

标签: sql sql-server tsql case


【解决方案1】:

你可以试试这个,

With CTE as
(

Select (100 * COUNT(CASE TurnedIn WHEN 1 THEN 1 ELSE NULL END) 
                      / COUNT(TurnedIn))        as Percentage

  from myTable          
)           
select Case When Percentage <70 
            Then 'C' 
            When Percentage <80
            Then 'B' 
            Else 'A'
        End
 from CTE

【讨论】:

  • 这可以很好地工作,但第二个答案是我更熟悉并使用的答案。抱歉,但感谢您的帮助。
  • @Kevrone,你打错了答案,尝试使用百分比 50 运行该脚本,结果会是“B”,但应该返回“C”。
  • 赞成,先生,我没有将其标记为错误,我只是将另一个标记为正确。
【解决方案2】:

写成:

    Select *, --name all columns you want
           case when Percentage < 80 then 'B'
                when  Percentage < 70 then 'C'
                else 'Add the grade which should be default when above 2 
                      case conditions are not met'
           end as LetterGrade
    from (      
    Select *,
        100 * COUNT(CASE TurnedIn WHEN 1 THEN 1 ELSE NULL END) 
                                 / COUNT(TurnedIn) AS Percentage 
    From Table1
    When ..) T

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多