Проблемы с постановкой дела в SQL - PullRequest
0 голосов
/ 08 октября 2011

Я пишу небольшой оператор case в SQL-запросе следующим образом:

 SELECT [##OT_NET_EQUATIONS_RHS_IDS].SYS_ID,
        [##OT_NET_EQUATIONS_RHS_IDS].NODE_ID,
        [##OT_NET_EQUATIONS_RHS_IDS].NODE_EQ_NO, 
        [##OT_NET_EQUATIONS_RHS_IDS].EQ_TYPE,
        CASE EQ_TP_OFFSET
          WHEN 'MULTIPLE' THEN '1'
          WHEN 'SINGLE' THEN '0'
        END AS EQ_TP_OFFSET,
        [##OT_NET_EQUATIONS_RHS_IDS].VAR_NAME,
        [##OT_NET_EQUATIONS_RHS_IDS].VAR_SET,
        [##OT_NET_EQUATIONS_RHS_IDS].VAR_SUBSET, 
        [##OT_NET_EQUATIONS_RHS_IDS].RHS_NODE_ID, 
        [##OT_NET_EQUATIONS_RHS_IDS].RHS_NODE_VAR_ID,
        CASE RHS_RELN
          WHEN 'EQ' THEN '0'
          WHEN 'LE' THEN '1'
          WHEN 'GE' THEN '2'
          WHEN 'MIN' THEN '3'
          WHEN 'MAX' THEN '4'
        END AS RHS_RELN,
        [##OT_NET_EQUATIONS_RHS_IDS].RHS_OBJECT,
        [##OT_NET_EQUATIONS_RHS_IDS].RHS_VAR_TYPE,
        [##OT_NET_EQUATIONS_RHS_IDS].RHS_TP_OFFSET,
        [##OT_NET_EQUATIONS_RHS_IDS].TIME_PRD,
        [##OT_NET_EQUATIONS_RHS_IDS].RHS_VALUE,  
        [##OT_NET_EQUATIONS_RHS_IDS].SUB_NET_ID, 
        CASE RHS_OBJECT
          WHEN 'OBJECTIVE' THEN 'OBJECTIVE'
        END AS FUNC_NAME 
   FROM ##OT_NET_EQUATIONS_RHS_IDS;

Я получаю сообщение об ошибке: не удается преобразовать значение varchar 'множественные' в тип данных int ... любая помощь.?я не уверен, почему я получаю эту ошибку, хотя я поставил одну ''.

1 Ответ

1 голос
/ 08 октября 2011

Я предполагаю, EQ_TP_OFFSET - это int, поэтому, когда Sql Server оценивает CASE, он пытается сравнить 'MULTIPLE 'со значением EQ_TP_OFFSET и не может преобразовать его в int.

Глядя на это снова, я думаю, возможно EQ_TP_OFFSET - это int, и вы хотели закодировать case, чтобы выбрать значение более значимое, чем 1 и 0.Может быть, должно быть наоборот?

CASE EQ_TP_OFFSET 
    WHEN 1 THEN 'MULTIPLE'  
    WHEN 0 THEN 'SINGLE' 
END AS EQ_TP_OFFSET

То же самое можно сказать и о RHS_RELN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...