SQL Сервер: СУММА числовое значение c, но оставьте строки как есть - PullRequest
1 голос
/ 10 января 2020

У меня проблемы с суммированием столбца, который имеет значения как числовое значение c, так и значение ncharvar, где числовые значения суммируются (и группируются), но строки остаются как есть.

Т.е.:

от:

| ID | Value |    
+----+-------+  
| a  | 4     |  
| b  | 3     |  
| c  | hello |  
| a   | 8    |  
+----+-------+

до:

| ID | Value |    
+----+-------+  
| a  | 12     |  
| b  | 3     |  
| c  | hello |   
+----+-------+

Пока у меня есть:

SELECT
   [ID],
   [CASE]
      WHEN ISNUMERIC([Value]) = 1 THEN SUM(CAST([Value] AS INT))
      ELSE [Value]
   END AS Value
FROM db
GROUP BY [ID]

Но я получаю ошибку, что "столбец Значение недопустимо в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY ".

1 Ответ

2 голосов
/ 10 января 2020

Используйте try_convert() / try_cast() вместо:

SELECT [ID], SUM(TRY_CAST([Value] as int))
FROM db
GROUP BY [ID];

Кстати, ошибка, которую вы получаете, заключается в том, что ваш cast() равен после * sum(). У вас есть синтаксическая ошибка, потому что value отсутствует в group by. Если вы этого не сделаете, вы все равно получите ошибку во время выполнения.

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