【问题标题】:Conditionally displaying a value in upper case有条件地以大写形式显示值
【发布时间】:2015-11-17 22:06:44
【问题描述】:

我有一个非常简单的查询,但我需要它,以便如果 Conditional 小于 2,则 Title 应显示为全部大写

SELECT DISTINCT Title, COUNT(Title) AS NumberOfTitles
FROM Table 
WHERE Conditional < 3
GROUP BY Title
ORDER BY Title

我已经尝试过CASE 等,但似乎可以让它工作

如果条件 = 1,我还需要将 Title 设置为“MAIN”

【问题讨论】:

    标签: sql tsql uppercase


    【解决方案1】:
    SELECT 
    case when conditional = 1 then 'MAIN'
    when conditional <> 1 and conditional < 2 then UPPER(Title)
    else Title end as Title
    , COUNT(Title) AS NumberOfTitles
    FROM Table 
    GROUP BY case when conditional = 1 then 'MAIN'
             when conditional <> 1 and conditional < 2 then UPPER(Title)
             else Title end
    ORDER BY case when conditional = 1 then 'MAIN'
             when conditional <> 1 and conditional < 2 then UPPER(Title)
             else Title end
    

    您可以使用case 语句尝试此操作。

    【讨论】:

    • 如果条件为 1,我还需要将 Title 更改为“MAIN”,我可以使用相同的情况还是需要第二个?
    • 查看修改后的版本。
    【解决方案2】:

    我会将逻辑包装在一个公用表表达式中,以避免在 group byorder by 子句中重复:

    WITH cte AS (
        SELECT 
           CASE WHEN conditional < 2 THEN UPPER(Title)
                ELSE Title 
           END AS Title
        FROM Table 
    ) 
    
    SELECT Title, COUNT(Title) AS NumberOfTitles
    FROM cte
    GROUP BY Title
    ORDER BY Title;
    

    【讨论】:

      猜你喜欢
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 2020-07-07
      • 1970-01-01
      • 2011-05-27
      • 2013-09-13
      • 2011-11-07
      相关资源
      最近更新 更多