Caso do servidor SQL. QUANDO. Em declaração
no servidor sql 2005, estou a tentar consultar esta instrução select
SELECT AlarmEventTransactionTableTable.TxnID,
CASE AlarmEventTransactions.DeviceID
WHEN DeviceID IN( '7', '10', '62', '58',
'60', '46', '48', '50',
'137', '139', '142', '143', '164' )
THEN '01'
WHEN DeviceID IN( '8', '9', '63', '59',
'61', '47', '49', '51',
'138', '140', '141', '144', '165' )
THEN '02'
ELSE 'NA'
END AS clocking,
AlarmEventTransactionTable.DateTimeOfTxn
FROM multiMAXTxn.dbo.AlarmEventTransactionTable
devolve o erro abaixo
Por favor, dê-me alguns conselhos sobre o que pode estar errado com o meu código.Msg 156, nível 15, Estado 1, Linha 4 sintaxe incorrecta perto do palavra-chave "IN".
26
Author: Martin Smith, 2011-05-18
4 answers
CASE AlarmEventTransactions.DeviceID
deve ser ...
Está a misturar as 2 formas da expressãoCASE
.
34
Author: Martin Smith, 2015-05-31 14:28:42
Obrigado pela resposta.
Eu modifiquei as declarações para parecer abaixo
SELECT
AlarmEventTransactionTable.TxnID,
CASE
WHEN DeviceID IN('7', '10', '62', '58', '60',
'46', '48', '50', '137', '139',
'141', '145', '164') THEN '01'
WHEN DeviceID IN('8', '9', '63', '59', '61',
'47', '49', '51', '138', '140',
'142', '146', '165') THEN '02'
ELSE 'NA' END AS clocking,
AlarmEventTransactionTable.DateTimeOfTxn
FROM
multiMAXTxn.dbo.AlarmEventTransactionTable
10
Author: Faisal, 2011-05-18 18:06:20
Experimenta isto...
SELECT
AlarmEventTransactionTableTable.TxnID,
CASE
WHEN DeviceID IN('7', '10', '62', '58', '60',
'46', '48', '50', '137', '139',
'142', '143', '164') THEN '01'
WHEN DeviceID IN('8', '9', '63', '59', '61',
'47', '49', '51', '138', '140',
'141', '144', '165') THEN '02'
ELSE 'NA' END AS clocking,
AlarmEventTransactionTable.DateTimeOfTxn
FROM
multiMAXTxn.dbo.AlarmEventTransactionTable
Apenas remover o texto seleccionado
Seleccionar Uma transmissãorelativaalarmenteável.TxnID, Processo transacções alarmantes.DeviceID Quando o DeviceID entrar('7', '10', '62', '58', '60', ...)
4
Author: Vinay Kumar, 2016-11-22 21:38:48
Pode ser mais fácil de ler quando escrito à mão usando o 'caso simples', por exemplo
CASE DeviceID
WHEN '7 ' THEN '01'
WHEN '10 ' THEN '01'
WHEN '62 ' THEN '01'
WHEN '58 ' THEN '01'
WHEN '60 ' THEN '01'
WHEN '46 ' THEN '01'
WHEN '48 ' THEN '01'
WHEN '50 ' THEN '01'
WHEN '137' THEN '01'
WHEN '139' THEN '01'
WHEN '142' THEN '01'
WHEN '143' THEN '01'
WHEN '164' THEN '01'
WHEN '8 ' THEN '02'
WHEN '9 ' THEN '02'
WHEN '63 ' THEN '02'
WHEN '59 ' THEN '02'
WHEN '61 ' THEN '02'
WHEN '47 ' THEN '02'
WHEN '49 ' THEN '02'
WHEN '51 ' THEN '02'
WHEN '138' THEN '02'
WHEN '140' THEN '02'
WHEN '141' THEN '02'
WHEN '144' THEN '02'
WHEN '165' THEN '02'
ELSE 'NA'
END AS clocking
...o que me faz pensar que talvez possa beneficiar de uma mesa de consulta para a qual possa eliminar completamente a expressão.
2
Author: onedaywhen, 2011-05-18 11:06:52