子查询中的排序与字符串接

勉励前行 2013-09-26 12:43:45
CREATE TABLE #TEST (F1 int)
INSERT INTO #TEST(F1) VALUES(8)
INSERT INTO #TEST(F1) VALUES(10)
INSERT INTO #TEST(F1) VALUES(7)
INSERT INTO #TEST(F1) VALUES(9)
INSERT INTO #TEST(F1) VALUES(1)


DECLARE @SheetStatus varchar(8000)
SET @SheetStatus = ''
SELECT @SheetStatus = @SheetStatus + ','+ CAST ( F1 as varchar(10))
FROM
(
SELECT distinct F1
FROM #TEST
--ORDER BY F1 DESC --想要倒序,可是子查询中不给排
) A
DROP TABLE #TEST

SELECT SUBSTRING(@SheetStatus,2,8000)

实际结果为:1,7,8,9,10 
想要结果为:10,9,8,7,1
...全文
93 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-09-26
  • 打赏
  • 举报
回复
在你原来基础上加个top 99.99 percent即可用order by
發糞塗牆 2013-09-26
  • 打赏
  • 举报
回复
CREATE TABLE #TEST (F1 int)
INSERT INTO #TEST(F1) VALUES(8)
INSERT INTO #TEST(F1) VALUES(10)
INSERT INTO #TEST(F1) VALUES(7)
INSERT INTO #TEST(F1) VALUES(9)
INSERT INTO #TEST(F1) VALUES(1)


DECLARE @SheetStatus varchar(8000)
SET @SheetStatus = ''
SELECT  @SheetStatus = @SheetStatus + ','+ CAST (  F1 as varchar(10))
FROM 
(
 SELECT DISTINCT TOP 99.99 PERCENT  F1
 FROM #TEST
 ORDER BY F1 DESC --想要倒序,可是子查询中不给排
) A
DROP TABLE #TEST

SELECT  SUBSTRING(@SheetStatus,2,8000)

/*
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10,9,8,7,1

*/
Andy__Huang 2013-09-26
  • 打赏
  • 举报
回复
CREATE TABLE #TEST (F1 int)
INSERT INTO #TEST(F1) VALUES(8)
INSERT INTO #TEST(F1) VALUES(10)
INSERT INTO #TEST(F1) VALUES(7)
INSERT INTO #TEST(F1) VALUES(9)
INSERT INTO #TEST(F1) VALUES(1)

select * from #TEST
order by F1 desc

declare @s varchar(8000) 
set @s=''
select @s=@s+cast(F1 as varchar)+','
from #TEST
order by F1 desc
print left(@s,len(@s)-1)


/*
10,9,8,7,1
*/
ai_li7758521 2013-09-26
  • 打赏
  • 举报
回复

 DECLARE @SheetStatus varchar(8000)
 SET @SheetStatus = ''
 SELECT  @SheetStatus = @SheetStatus + ','+ CAST (  F1 as varchar(10))
 FROM 
 (
  SELECT  distinct F1
  FROM #TEST
) A
ORDER BY F1 DESC
 DROP TABLE #TEST

 SELECT  SUBSTRING(@SheetStatus,2,8000)

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧