Невозможно использовать заказ по предложению с для пути XML правильно (сервер SQL) - PullRequest
7 голосов
/ 08 декабря 2010

У меня есть следующая ситуация (скажем, tblRecord)

ID RowNum  Data
1 1  and seventy nine
1 2  five hundred
1 3  two thousand

Мне нужно, чтобы вывод был

ID   Data
 1   two thousand five hundred and seventy nine

У меня есть запрос ниже

select ID , Data = 
  ( Select ' ' + cast(Data as varchar(max)) from tblRecord t2
                  where t2.RowNum= t1.RowNum
                  and t2.ID =t1.ID
                  order by t1.RowNum
                  for xml path(''))
from tblRecord t1
group by t1.ID

Но вывод будет

ID  Data
1 five hundred two thousand and seventy nine

Помощь, необходимая для этого.

Спасибо

1 Ответ

12 голосов
/ 08 декабря 2010

Попробуйте:

SELECT DISTINCT
    ID, Data = (SELECT ' ' + Data 
                FROM dbo.tblRecord t2
                WHERE t2.ID = t1.ID
                ORDER BY t2.RowNum DESC
                FOR XML PATH('')
               )
FROM dbo.tblRecrd t1

Ваша первая проблема была ORDER BY t1.RowNum во внутреннем выборе - вместо этого должно быть ORDER BY t2.RowNum.Во-вторых: это условие соединения where t2.RowNum= t1.RowNum не является необходимым и вызывает проблемы.И в-третьих: GROUP BY снова не нужен и не полезен - просто используйте SELECT DISTINCT для достижения того, что вы ищете.

Также - не уверен, почему вы используете Data как VARCHAR (МАКСИМУМ) ???

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