如何在SQL Server的select语句中向列列表中添加临时列?

问题描述

我写了以下代码,如下所示:

DECLARE @SQL nvarchar(max);
DECLARE @ColumnList nvarchar(max);
DECLARE @SampleTable nvarchar(max);

SET @SampleTable = 'dbo.CourseType' --HERE I'LL BE GIVING LIST OF TABLES

SELECT
    @ColumnList = (SELECT STUFF((SELECT N',' + QOUTENAME(c.name)
                                 FROM sys.columns c
                                 INNER JOIN sys.objects o ON c.object_id = o.object_id
                                 WHERE o.name = @SampleTable 
                                   AND c.name NOT IN ('ID','Number')
                                 ORDER BY c.column_id 
                                 FOR XML PATH(''),TYPE).value('text()[1]','nvarchar(max)'),1,2,N'')) 

SELECT @ColumnList

从此脚本中,我将获得除列IDNumber之外的所有列的列表。现在,我要做的就是读取此列列表,即[Name],[Description],[SortOrder],[BusinessName],[Obsolete],下面列出了一些临时列:

NULL AS EntityID,NULL AS ModifiedBy,NULL AS CreatedBy

查询结果应如下所示:

Name         Description                        SortOrder   BusinessMeaningName         Obsolete   EntityID    ModifiedBy    CreatedBy
Inviern      Cursos de Invierno de Pregrado         1       AcademicPeriodType.Invierno    0         NULL       NULL          NULL
Lectivo      Cursos Lectivos de Pregrado            0       AcademicPeriodType.Lectivo     0         NULL       NULL          NULL
Verano       Cursos de Verano de Pregrado           1       AcademicPeriodType.Verano      0         NULL       NULL          NULL

我知道我可以直接通过为一两个表选择带有临时列的列名来直接执行此操作。但是我必须为一大堆桌子这样做。我想不出办法。

现在,我不知道如何在select语句中添加EntityID,CreatedBy,ModifiedBy。我试图做这样的事情。

SET @SQL = 'SELET '
            + @ColumnList
            + ' FROM ' + @SampleTable;
EXEC sp_executesql @SQL;

有人可以帮我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)