我有以下情况(比如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
需要帮助。
由于
答案 0 :(得分:12)
试试这个:
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(MAX)???