【问题标题】:change value from query when running运行时从查询中更改值
【发布时间】:2016-11-16 23:30:26
【问题描述】:
SELECT 
    'https://xxxxxx/' + CONVERT(VARCHAR(10), [AnnouncementID]) AS 'URL', 
    [Status] AS 'Code', 
    [Subject] AS 'Text', 
    (CASE 
        WHEN LEN([Subject]) > 500 
           THEN SUBSTRING([Subject], 0, 500) + '...' 
           ELSE [Subject] END) 
    AS 'ShortText'
FROM 
    [Announcement] 
WHERE 
    [Public] = 1 
    AND [Enable] = 1 
    AND GETDATE() BETWEEN [ActiveFrom] AND [ActiveTo] 
ORDER BY 
    [Status] ASC, [ActiveFrom] ASC

此查询返回如下内容:

Url                 Code        Text    ShortText
-------------------------------------------------
https://xxxxxx/2    Enable      Text    Text
https://xxxxxx/1    Critical    Text    Text

我想自动更改[Code] 中的文字。

  • 如果严重 -> 红色
  • 如果启用 -> 黄色

如何重写上面的查询字符串?

【问题讨论】:

  • 请发布预期结果并标记您正在使用的 DBMS
  • 我期望输出会改变 Enable -> YELLOW 和 Critical -> RED。以便查询放置值
  • 您可能想添加更多信息,说明为什么应将启用更改为黄色并将关键更改为红色

标签: sql


【解决方案1】:

使用案例:

CASE [Status]
    WHEN 'Enable' then 'YELLOW'
    WHEN 'Critical'  then 'RED'
END as 'Code'

或使用带有其值的 JOINED 表。

【讨论】:

    【解决方案2】:

    查看this answer。它引用this article。 通过一些小的修改,根据 [Code] 的值添加一些 CASE 语句,您可以添加 <td style="color: red;"> 或 <td style="color: yellow;">。

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      如果我理解正确;您想将 Enable 和 Critical 分别更改为 YELLOW 和 RED 吗?

      您可以使用 case 语句来做到这一点,因为您没有标记您正在使用的 DBMS 我无法真正帮助语法,但一个粗略的想法是;

      SELECT 'https://xxxxxx/' + CONVERT(VARCHAR(10), [AnnouncementID]) AS 'URL', 
      Case [Status]
        when 'Critical' then 'RED'
        when 'Enable' then 'YELLOW'
        end AS 'Code' , 
      [Subject] AS 'Text', 
      (CASE WHEN LEN([Subject]) > 500 THEN SUBSTRING([Subject], 0, 500) + '...' ELSE [Subject] END) AS 'ShortText' 
      
      FROM [Announcement] 
      
      WHERE [Public] = 1 
      AND [Enable] = 1 
      AND GETDATE() BETWEEN [ActiveFrom] AND [ActiveTo] 
      
      ORDER BY [Status] ASC, [ActiveFrom] ASC
      

      这实际上是说如果 [Status] 的值为“Critical”,则显示“RED”,或者如果值为“Enable”,则显示“YELLOW”

      【讨论】:

      • 被打败一分钟!
      猜你喜欢
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      相关资源
      最近更新 更多