必须在选择列中指定顺序。[英] have to specify the order in Selecing columns.

问题描述

大家好,

我创建了一张像 EMP 这样的表.假设由 3 列组成,如 Id、Name、Salary.

带数据的 Emp 表:
身份证姓名工资
----------------------------------
1约翰500
2 亚努 1000
3 拉姆 600


我期待着这种激情的输出


预期输出:
身份证 身份证 姓名 姓名 工资 工资
------------------------------------------------------------------
1 1 约翰·约翰 500 500
2 2 亚努亚努 1000 1000
3 3 公羊公羊 600 600

以这种方式,表由 40 列组成,我不想硬编码.
在那种激情中还有几张桌子.


是可能的.帮我.在此先感谢.

推荐答案

select id, id as id2, name, name as name2,salary,salary assalary2 必须是答案,虽然我没有''看不到问题的重点.

这里是:
声明 @TableName varchar(最大)set @TableName = '表名'声明 @selectstatement varchar(最大值)SELECT @selectstatement = ISNULL(@selectstatement, '') + syscolumns.name +','+syscolumns.name +','FROM sysobjectsJOIN syscolumns ON sysobjects.id = syscolumns.idJOIN systypes ON syscolumns.xtype=systypes.xtypeWHERE sysobjects.xtype='U' sysobjects.name= @TableNameORDER BY sysobjects.name,syscolumns.colidset @selectstatement = 'select '+substring(@selectstatement, 1 , LEN(@selectstatement) -1)+' from '+ @TableNameexec (@selectstatement)


希望对您有所帮助.

/****** 对象:StoredProcedure [dbo].[FindTableValueByRepeatingColumns] 脚本日期:02/01/2012 12:20:55 ******/SET ANSI_NULLS ON开始SET QUOTED_IDENTIFIER ON开始CREATE PROCEDURE [dbo].[FindTableValueByRepeatingColumns](@TableName as NVARCHAR(MAX))AS开始DECLARE @Columns as NVARCHAR(MAX)DECLARE @SQuery as NVARCHAR(MAX)SET @Columns=''SET @SQuery =''SELECT @Columns=@Columns + Name + ',' FROM(select SC.name,Colid from syscolumns SC inner join sysobjects SO on SC.id=SO.idWHERE SO.name=@TableName联合 全部select SC.name,Colid from syscolumns SC inner join sysobjects SO on SC.id=SO.idWHERE SO.name=@TableName) AS tbl1 Order by colidSET @SQuery ='SELECT ' + SUBSTRING(@Columns,1,LEN(@Columns)-1) + ' FROM ' + @TableNameEXEC SP_EXECUTESQL @SQueryEND

本文地址:https://www.itbaoku.cn/post/1395051.html