首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >动态存储过程按列排序标题

动态存储过程按列排序标题
EN

Stack Overflow用户
提问于 2015-07-11 12:24:06
回答 2查看 68关注 0票数 0

我想按列标题对一个动态存储过程的结果进行排序。

例如,我的存储过程返回以下表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
╔══════╦════════╦════╦══════╦═════════════╦═════════════╦════════╗
║ name ║ family ║ id ║ type ║ description ║ create_date ║ row_no ║
╚══════╩════════╩════╩══════╩═════════════╩═════════════╩════════╝

现在,我想创建一个存储过程来执行这个动态存储过程,但是这次得到一个按列标题排序的结果,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
╔═════════════╦═════════════╦════════╦════╦══════╦════════╦══════╗
║ create_date ║ description ║ family ║ id ║ name ║ row_no ║ type ║
╚═════════════╩═════════════╩════════╩════╩══════╩════════╩══════╝

我建立了这个问题的答案,但我不确定我的方式是正确或简单的方式!

我能在下面的答案中简单地执行这件事吗?

编辑:

我的答案是不适用于XML数据类型的列!因为OPENQUERY不支持这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-11 12:24:06

我创建了一个SP来执行以下命令步骤:

  • 1)将动态SPs结果插入到#TempTable
  • 2)在tempdb.sys.[columns]表中查找查询结果列,因为我的SP结果现在存储在临时表中。
  • 3)对已创建的列标题进行排序,并按此模式插入字符串中的标题: col1,col2,col3,
  • 4)创建一个this模型: ‘'SELECT’+‘排序列: col1,col2,col3,.’+‘从’+ '#temptable‘
  • 5)执行创建的that以显示排序的SP结果。

在测试项目中,我的动态SP名称是:TestDB.dbo.sp_TEST。现在,Sorter SP代码是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*
 * Run Just Once Time For Set Configures and Create Linked Server
 */
-- Set Permissions to insert into a temp table
--sp_configure 'Show Advanced Options', 1
--GO
--RECONFIGURE
--GO
--sp_configure 'Ad Hoc Distributed Queries', 1
--GO
--RECONFIGURE
--GO

--EXEC sp_addlinkedserver 
--     @server = 'LOCALSERVER',
--     @srvproduct = '',
--     @provider = 'SQLNCLI',
--     @datasrc = 'Localhost'



DECLARE @tbl     VARCHAR(MAX) = '#SortedColsTempTable',
        @sql     VARCHAR(MAX)

-- If old temp table is exist then clear that
IF OBJECT_ID('tempdb..#SortedColsTempTable') IS NOT NULL
    DROP TABLE #SortedColsTempTable

-- Insert your results into #SortedColsTempTable temp table's
SELECT * INTO #SortedColsTempTable
FROM   OPENQUERY([LOCALSERVER], 'EXEC TestDb.dbo.sp_TEST 1') 

-- Create a string by sorted columns title
SET @sql = (
        SELECT '[' + c.name + '], ' AS [text()]
        FROM   tempdb.sys.[columns] c
               INNER JOIN tempdb.sys.tables t
                    ON  t.[object_id] = c.[object_id]
        WHERE  t.name LIKE '#SortedColsTempTable%'
        ORDER BY
               c.name
               FOR XML PATH('')
    )

SET @sql = 'SELECT ' + LEFT(@sql, LEN(@sql) -1) + ' FROM ' + @tbl

EXEC (@sql)
票数 0
EN

Stack Overflow用户

发布于 2015-07-17 01:01:28

这里是我的例子,希望能对你有所帮助:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE [dbo].[Test](
    [text1] [nvarchar](500) NULL,
    [text4] [nvarchar](500) NULL,
    [text3] [nchar](10) NULL
) ON [PRIMARY]

GO
create proc sp_TableOrderBy 
@tableName varchar(100)
as
declare @sql nvarchar(max)
declare @tableColOrderBy nvarchar(max)
SELECT @tableColOrderBy = COALESCE(@tableColOrderBy + ', ', '') + Name
FROM sys.columns
WHERE object_id = OBJECT_ID(@tableName)
order by name
set @sql = 'select ' + @tableColOrderBy + ' from ' + @tableName
execute sp_executesql @sql

exec sp_TableOrderBy 'Test'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31361478

复制
相关文章
Excel按列排序和按行排序
文章背景:Excel二维表中记录着多行多列的数据,有时需要按行或按列排序,使数据更加清晰、易读。下面分别对按列排序和按行排序进行介绍。
Exploring
2022/08/10
3.2K0
Excel按列排序和按行排序
BI技巧丨按列排序
PowerBI本身内置的排序方式,是遵循ASCII国际标准的方式,这就导致了中文的默认排序对于很多小伙伴来说并不友好。
PowerBI丨白茶
2022/11/12
3.5K0
BI技巧丨按列排序
使用 Python 按行和按列对矩阵进行排序
假设我们采用了一个输入的 MxM 矩阵。我们现在将使用嵌套的 for 循环对给定的输入矩阵进行逐行和按列排序。
很酷的站长
2023/02/22
6.2K0
使用 Python 按行和按列对矩阵进行排序
【R语言】数据框按两列排序
我相信大家经常会使用Excel对数据进行排序。有时候我们会按照两个条件来对数据排序。假设我们手上有下面这套数据,9个人,第二列(score)为他们的考试成绩,第三列(code)为对应的评级。80分以上为优秀,60-80为良,60以下为差。
生信交流平台
2022/09/21
2.3K0
【R语言】数据框按两列排序
Java 二维数组按指定列排序(一)
private static void printArr(int[][] nums) {
用户7886150
2020/12/12
2.1K0
java中的sort排序算法_vba中sort按某列排序
C++中提供了sort函数,可以让程序员轻松地调用排序算法,JAVA中也有相应的函数。
全栈程序员站长
2022/09/21
2.3K0
Python-科学计算-pandas-22-按某列排序
系统:Windows 10 编辑器:JetBrains PyCharm Community Edition 2018.2.2 x64 pandas:1.1.5
zishendianxia
2021/09/29
1.5K0
underscore.js的排序扩展。 倒序和多列排序
   // Sort the object's values by a criterion produced by an iterator.     _.sortBy = function (obj, iterator, context) {         iterator = lookupIterator(iterator, context);         return _.pluck(_.map(obj, function (value, index, list) {             r
申君健
2018/09/21
3K0
shell按列合并文件
cat命令可以按行依次合并两个文件。但有时候我们需要按列合并多个文件,也就是将每一个文件的内容作为单独的的几列,这个时候可以用paste来按列合并多个文件。 用法: paste file1 file2 ...
生信编程日常
2020/06/28
2.9K0
Python 实现多 Sheet 表合并、多工作簿合并、一表按列拆分
作者:黄伟 来源:杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(WeChat ID:Hc220066)
AI算法与图像处理
2019/11/13
11K0
史上最速解决:Power BI由"按列排序"导致的"循环依赖"
当我们在处理这样的数据时,想要进行排列时,会发现它并没有按照我们预想的按照1……9,10,11,12……这样的排序:
陈学谦
2021/12/08
4.4K0
史上最速解决:Power BI由"按列排序"导致的"循环依赖"
自定义多列排序:C++/Java实现
  有些时候,我们在编程中会遇到多列排序的需求。假如在execle,这事儿就太easy了。不过没办法,现在就需要你用Java或者C++实现这样一个功能!
云海谷天
2022/08/09
5810
自定义多列排序:C++/Java实现
CSS——多列
多列属性可以将文本设计成像报纸杂志那种多列排版的布局,类似于Microsoft Word中的段落分栏功能。
Html5知典
2019/11/26
1.2K0
Bootstrap列排序
在Bootstrap中,列排序(Column Ordering)是一种布局技术,允许我们在不同屏幕尺寸下重新排列列的顺序。这对于在响应式设计中调整布局非常有用。
堕落飞鸟
2023/05/17
1K0
pandas按行按列遍历Dataframe的几种方式
iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。 itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。 iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。 示例数据
kirin
2021/04/30
7.2K0
map按key和按value排序
看一个题: 查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。 例示: jack 70 peter 96 Tom 70 smith 67 从高到低 成绩 peter 96 jack 70 Tom 70 smith 67 从低到高 smith 67 Tom 70 jack 70 peter 96 1、按照value排序 2、可以递增排序和递减排序 3、保证排序的稳定性 golang map按key排序 //golang的map不保证有序
李海彬
2018/03/27
4.7K0
map按key和按value排序
看一个题: 查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。 例示: jack 70 peter 96 Tom 70 smith 67 从高到低 成绩 peter 96 jack 70 Tom 70 smith 67 从低到高 smith 67 Tom 70 jack 70 peter 96 1、按照value排序 2、可以递增排序和递减排序 3、保证排序的稳定性 golang map按key排序 //golang的map不保证有序
李海彬
2018/03/27
3.2K0
hastable按值排序
最近做了一个项目,需要对一个2维数组的值进行排序然后再取出对应的Key值。开始是用HashTable做的,不过HashTable中的排序只是对Key进行排序,如果想对值进行排序得用其它办法。下面我就把这种方法说下:
codeniu
2022/02/25
1.3K0
python 按中文排序
安装中文库 sudo apt-get update sudo apt-get install language-pack-zh-hans-base sudo dpkg-reconfigure locales 使用 import locale locale.setlocale(locale.LC_COLLATE, 'zh_CN.UTF8') cmp = locale.strcoll courses.sort(lambda x, y: cmp(x.course_name, y.course_name)) 测试
py3study
2020/01/06
1.7K0
怎样能自动按列01 列02 最大为列99,来设置列标题?
前几天在Python最强王者交流群有个粉丝咨询了这个问题:获取到数据表的列数比较简单,一般不超过99列,怎样能自动按列01 列02 最大为列99,来设置列标题?一劳永逸,以后这类场景都这样套用。
前端皮皮
2022/12/19
1.1K0
怎样能自动按列01 列02  最大为列99,来设置列标题?

相似问题

Grails:如何使用Server按Grails查询中的多列排序

13

按多列排序

20

按多列排序

20

按多列排序

10

按多列排序

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文