Как изменить значение Select Query Value на Text с использованием MySQL?

Посмотрите на следующий запрос. Как вы отображаете столбец "Действие" в виде текста. Если результатом 'Действие' является LEQ 0, тогда окуните текст "Сбой", а если "Действие" - GRT 0, отобразите текст "Удержание"?

SELECT col1 AS Action
FROM vdk
WHERE t_stamp Between "{StartTime}" AND "{EndTime}"

2 ответа

Решение

Используйте CASE WHEN ... ELSE ... END и выберите из вашего набора (запроса):

SELECT *, (CASE WHEN Action <= 0 THEN 'Crash' ELSE 'Hold' END) as ActionText
FROM (
    SELECT col1 AS Action
    FROM vdk
    WHERE t_stamp Between "{StartTime}" AND "{EndTime}"
) q

Рефакторинг ответа выше, так как я не вижу необходимости добавлять запрос в таблицу псевдонимов. Я думаю, что это должно работать, другой ответ должен работать слишком кстати, но это немного более сложный запрос без какой-либо причины.

SELECT (CASE WHEN col1 <= 0 THEN 'Crash' ELSE 'Hold' END) AS Action
FROM vdk
WHERE t_stamp Between "{StartTime}" AND "{EndTime}"

Это приложение похоже на мой первый вопрос, и я подумал, что оно может помочь кому-то еще в будущем. Пользователь может выбрать из раскрывающегося списка таблицы набор параметров для ввода значения в базу данных.

Использование функции расширения компонента Ignition Power Table configureEditor со следующим скриптом. Этот скрипт устанавливает выпадающий список.

if colName == 'Action':
   return {options': [(0, 'Null'), (1, 'HOLD'), (2, 'CRASH')]}

Наряду с той же функцией расширения Power Table в скрипте CellEdited. Этот сценарий вводит выбор в качестве значения в базу данных.

#onCellEdited Upadte Query
row = rowIndex
col = colIndex
colName = colName
value = newValue

ndx = self.data.getValueAt(row,0)
query = "UPDATE vdk SET %s = ? WHERE ndx = ?" % colName
system.db.runPrepUpdate(query,[value,ndx],'history')
system.db.refresh(self.data)
Другие вопросы по тегам