MAX (text) возвращает тип данных операнда text недопустим для оператора max. в sql server 2008
я использую text
тип данных в одной из моих таблиц, а также использовать PIVOT
с запросом тоже.
Я не могу использовать MAX(AttributeValue)
здесь AttributeValue
тип text
. Он возвращает следующую ошибку Operand data type text is invalid for max operator.
. Как я могу использовать его здесь, потому что я вынужден использовать
3 ответов
вы можете привести свой текстовый столбец к varchar (max).
select max(cast(AttributeValue as varchar(max)))
from YourTable
вы можете преобразовать свои данные в sub-запрос.
SELECT
[6B93119B-263B-4FED-AA89-198D26A3A3C4] DOB
,[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A] CaseTitle
FROM ( SELECT AttributeID,
CAST(AttributeValue as VARCHAR(MAX)) as AttributeValue
FROM MyTable
) AS T
PIVOT
( MAX(AttributeValue)
FOR AttributeID IN
(
[6B93119B-263B-4FED-AA89-198D26A3A3C4]
,[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A]
)
) ResultTable
Если то, что я помню, правильно, текст в SQL Server не позволяет запускать много команд против него. Единственное (Половинное) решение, с которым я столкнулся, - это приведение текста к другому типу данных; к сожалению, это может означать написание некоторого кода и работу только с фактическими сохраненными текстовыми данными в разделах.
кроме того, текст удаляется из будущих версий SQL Server: http://msdn.microsoft.com/en-us/library/ms187993.aspx
Итак, просто измените тип данных столбца для NVarChar (Max), и, надеюсь, запрос будет работать правильно.
вы также можете использовать DATALENGTH () в пределах MAX (), чтобы избежать кастинга потенциально очень больших строк.
SELECT
6B93119B-263B-4FED-AA89-198D26A3A3C4] DOB
,[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A] CaseTitle
FROM MyTable PIVOT
( MAX(DATALENGTH(AttributeValue))
FOR AttributeID IN
(
[6B93119B-263B-4FED-AA89-198D26A3A3C4]
,[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A]
)
) ResultTable