Ошибка Varchar в Int при запросе сводной таблицы

#sql #sql-server

Вопрос:

У меня есть список номеров учетных записей и идентификаторов команд в таблице. Типы данных для каждого столбца-Номер учетной записи = varchar(16), а идентификатор команды-varchar(9). Я пытаюсь повернуть так, чтобы данные отображались по номерам учетных записей в двух командах.

Мой вопрос таков….

     SELECT  A,
            B

    FROM

(SELECT CAST(AccountID AS INT) AS AccountID,
        CAST(Team AS INT) AS Team

FROM dbo.Client_Download

) AS SourceTable

Pivot

(MAX(AccountID)
For Team in ([A],[B])) As CvgPivot
 

Я старался сделать это как можно проще, но постоянно получаю следующую ошибку

 Msg 245, Level 16, State 1, Line 18
Conversion failed when converting the varchar value 'URXQ14GBTHQJ' to data type int.
 

Я попытался поместить команду CAST во все варианты запроса и все равно возвращаюсь к той же ошибке.

Любая помощь была бы очень признательна.

Заранее спасибо

Комментарии:

1. Пожалуйста, предоставьте примерные данные и желаемые результаты.

2. Похоже, у вас есть либо идентификатор учетной записи, либо команда, 'URXQ14GBTHQJ' так почему вы думаете, что можете добавить это в int? Отложите PIVOT это полностью в сторону, разве вы не получаете ту же ошибку от SELECT CAST(AccountID AS INT) AS AccountID, CAST(Team AS INT) AS Team FROM dbo.Client_Download; ?

3. Привет, Аарон, я не хочу вводить их в Int из-за сообщения об ошибке, которое выдает SQL. Если вы можете сказать мне, как этого избежать, я был бы вам очень признателен.

4. То, что у вас есть, на самом деле не имеет смысла. Во внутреннем выборе вы CAST указываете значение Team для an int , однако в поле PIVOT вы хотите MAX значение AccountID , где значение Team является 'A' или 'B' ; ни 'A' то, ни другое или 'B' не является int

5. I don't want to cast them into Int — ну, тогда почему в вашем запросе говорится, например, CAST(Team AS INT) AS Team ? SQL Server не создавал этот код, это сделали вы.

Ответ №1:

Я не знаю, почему вы конвертируете значения в целые. Это делает то, что ты хочешь?

 SELECT A, B
FROM (SELECT AccountID, Team
      FROM dbo.Client_Download
     ) AS SourceTable
PIVOT (MAX(AccountID)
      For Team in ([A],[B])) As CvgPivot