Преобразование нескольких строк через функцию приведения в SQL - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть database table с name, address и monthly account expense в качестве информации столбца для каждого месяца.

Я хочу добавить расходы с month1 до month12 данныхтаблицы accounts, но она относится к типу данных varchar, я хочу преобразовать ее в тип данных float, а также использовать логическое выражение в запросе, которое получает SUM всех расходов (month 1+ month 2 + ... month12) должно быть больше 10,000.

Но я не могу решить эту проблему, так как запрос не работает и я получаю ошибки

Пожалуйста, проверьте этот запрос и сообщите мне о любых изменениях

SELECT name
      ,address
      ,CAST(([month1] + [month2]...[month12] AS float) AS 'total expense'
FROM Accounts_Table
WHERE name LIKE 'a%'
GROUP BY name, address, 'total expense'
HAVING 'total expense' > 10000

Некоторые указатели будут хороши, чтобы обойти эту проблему.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Вы должны конвертировать каждый столбец varchar в Float, прежде чем добавлять его.Ищите объяснения

, (CAST( [month1] as float) + CAST([month2] as float)... CAST([month12] as Float))  AS 
   'total expense'
0 голосов
/ 11 сентября 2018

Способ добавления и преобразования столбцов month был неверным.

Также вы не сможете вызвать псевдоним [Total Expense] в предложении HAVING в том же запросе, где вы его объявили. Используйте SUBQUERY.

См. Ниже.

SELECT [name]
      ,[address]
      ,[Total Expense]
FROM (
    SELECT [name]
          ,[address]
          ,CAST([month1] AS float) +
           CAST([month2] AS float) +
           CAST([month3] AS float) +
           CAST([month4] AS float) +
           CAST([month5] AS float) +
           CAST([month6] AS float) +
           CAST([month7] AS float) +
           CAST([month8] AS float) +
           CAST([month9] AS float) +
           CAST([month10] AS float) +
           CAST([month11] AS float) +
           CAST([month12] AS float) AS [Total Expense]
    FROM [Accounts_Table]
    WHERE [name] LIKE 'a%') AS [src]
GROUP BY [name]
        ,[address]
        ,[Total Expense]
HAVING [Total Expense] > 10000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...