2016-10-16 4 views
0
STUFF((SELECT distinct ',' + QUOTENAME(c.Error_Code) 
     FROM 
      (SELECT Connection_type, Error_Code, Count 
      FROM 
       (SELECT 
        Connection_Type, error_code, count(*) AS count, 
        row_number() over(partition by Connection_Type order by count(*) desc) as ROWNUM 
       FROM 
        Staging 
       WHERE 
        TransactionDate >= convert(varchar, getdate() -1, 111) 
        AND Status != 'Deliver' 
       GROUP BY 
        Connection_Type, error_code) a 
      WHERE 
       rownum <= 10) c 
     FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') 

Что линияЧто такое значение в SQL Server

.value('.', 'NVARCHAR(MAX)' 

означает?

+0

Ваш запрос sql преобразуется в xml. Чтобы получить контроль над этим, вы использовали 'FOR XML PATH ('')', а значение выполняет XQuery в xml, который, наконец, возвращает требуемый вывод. –

ответ

1

значения метода преобразует данные XML в NVARCHAR, потому что ВЕЩЕСТВА функция (она удаляет первую запятую из списка значений) ожидает символьное выражение в качестве первого аргумента.

Вы можете попробовать это здесь: SQL Fiddle

Если вы удалите значение, вы получили сообщение об ошибке.

+0

спасибо за письмо, а во-вторых, что такое ТИП? – ARJUN

+0

Сообщает, что запрос возвращается как XML, поэтому, если вы его вытащите, вам тоже не понадобится _VALUE_. – banazs

Смежные вопросы