2016-11-16 4 views
0
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].

  • Если Critical -> RED
  • Если Enabled -> YELLOW

Как я могу переписать мою строку запроса выше?

+1

, пожалуйста, сообщите об ожидаемом результате, а также пометьте СУБД, которую вы используете. – TheGameiswar

+0

Что я ожидаю, так это то, что выход изменит Enable -> YELLOW и Critical -> RED. так что в запросе укажите значения –

+0

, возможно, вы захотите добавить дополнительную информацию о том, почему включение должно быть изменено на желтый и критическое на красный – TheGameiswar

ответ

1

в чехле:

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

или использовать присоединяемой таблицы со своими значениями.

0

Если я правильно понял; вы хотите изменить слова Enable и Critical на YELLOW и RED соответственно?

Вы можете сделать это с помощью оператора case, так как вы не отметили, какую СУБД вы используете. Я не могу помочь с синтаксисом, но была бы грубой идеей;

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] имеет значение «критических» Дисплей «RED» или если имеет значение «Enable», то отображение «желтый»

+0

Избито на минуту! – RDKells

0

ЗАКАНЧИВАТЬ this answer. Он ссылается на this article. С некоторыми незначительными изменениями, добавив несколько операторов CASE на основе значения [Code], вы можете добавить <td style="color: red;"> или <td style="color: yellow;">.

Я надеюсь, что это поможет!

Смежные вопросы