C# C TSQL如何在复制当前数据的情况下执行IF列到达SELECT INTO?

C# C TSQL如何在复制当前数据的情况下执行IF列到达SELECT INTO?,c#,sql-server,sql-server-2008,C#,Sql Server,Sql Server 2008,在将当前数据复制到此第二个表中时,如何使用CASE执行检查以检查是否已到达特定列,然后选择插入到另一个表中 这是因为在现实世界中,我的第一个tbl案例只接受第20列的插入—实际上这些是上传文件 这两个定义与我将第二个从Select表填充为>Script到>New Table query…等完全相同。ID位于两个标识栏中 例如: -插入相同的数据,但不要插入UploadNo1列,将UploadNo20插入casesTwo列,因为这应该已经有表cases中的数据文件 INSERT INTO c

在将当前数据复制到此第二个表中时,如何使用CASE执行检查以检查是否已到达特定列,然后选择插入到另一个表中

这是因为在现实世界中,我的第一个tbl案例只接受第20列的插入—实际上这些是上传文件

这两个定义与我将第二个从Select表填充为>Script到>New Table query…等完全相同。ID位于两个标识栏中

例如:

-插入相同的数据,但不要插入UploadNo1列,将UploadNo20插入casesTwo列,因为这应该已经有表cases中的数据文件

   INSERT INTO casesTwo --ONLY FILE FROM COLUMN UploadNo20
   SELECT CAST(
         CASE 
              WHEN No20 = 'UploadNo20' 
                 THEN 1 
                 ELSE 0 
         END)
   FROM cases

CASE不行-您必须手动列出前20列。如果希望动态获取列,则需要动态查询

以下是一个示例:

DECLARE @DynamicSQL NVARCHAR(max);
DECLARE @ColumnsLits NVARCHAR(max);

-- Concatenate first 20 columns:
SELECT TOP 20
    @ColumnsLits = isnull(@ColumnsLits + ', ', '') + column_name
FROM 
    information_schema.columns
WHERE
    table_name = 'YourTable'
ORDER BY
    ordinal_position
OPTION
    (MAXDOP 1)

-- You can check column list:
-- SELECT @ColumnsLits

-- Build the query:
SET @DynamicSQL = N'SELECT ' + @ColumnsLits + N' FROM YourTable'

-- ... and run it:
EXEC (@DynamicSQL)

谢谢你的回复。你有我可以试试的例子吗?我认为这里的数据库设计不是最好的,但我相信在现实世界中,理想的情况是动态创建新的“UploadNo”列,直到达到某种限制,无论是列数(例如第100列UploadNo 100)还是数据内存大小(例如,如果总上传大小达到100mb)。如果是这样,则抛出异常并阻止进一步上载。阻塞/异常不是什么问题,因为前端目前只有40个上传按钮DDL,因此用户无法实际选择,例如第41次上传。当然-只是添加了一个示例。谢谢。到目前为止,我已经为测试pupose做了这项工作,它是有效的:声明dynamicsqlnvarcharmax;声明ColumnsList NVARCHARmax;选择前20列列表=isnull@ColumnsList[ViewpointDB].[dbo].[tbl_suppcorr]选择ColumnsList中的“+”,“,+IOSupportURL20,但这不起作用:声明@DynamicSQL NVARCHARmax;声明@ColumnsList NVARCHARmax;从[ViewpointDB].[dbo].[tbl_suppcorr]中选择前20名@ColumnsList=isnull@ColumnsList+',',+IOSupportURL21作为scT-选择@ColumnsList,其中scT.ID=[dbo].[tbl_suppcorr]。ID选项MAXDOP 1-您可以检查列列表:选择@ColumnsList错误为:Msg 4104,级别16,状态1,第4行无法绑定多部分标识符dbo.tbl_suppcorr.ID。