Sql server 从笨拙的重复表中查询-使用“for each”循环、枢轴或游标?

Sql server 从笨拙的重复表中查询-使用“for each”循环、枢轴或游标?,sql-server,tsql,loops,cursor,pivot,Sql Server,Tsql,Loops,Cursor,Pivot,我有两个包含大量列的表,我需要将它们放入一个可用于前端编程的表中 第一个表有定义,第二个表有数据。每个表的第一部分都有一些附加数据,用于连接的匹配: 表1各栏: 表2列: 我希望能够选择一个日期范围,并为每个列“xxx”输出以下格式的表格: 期望输出: 我可以为每一列使用一个简单的join语句来实现这一点,但是这很难管理超过400列,这可能会增加。我的直觉是做一个类似以下的循环: for each value in ('001', '002', '003'................

我有两个包含大量列的表,我需要将它们放入一个可用于前端编程的表中

第一个表有定义,第二个表有数据。每个表的第一部分都有一些附加数据,用于连接的匹配:

表1各栏: 表2列: 我希望能够选择一个日期范围,并为每个列“xxx”输出以下格式的表格:

期望输出: 我可以为每一列使用一个简单的join语句来实现这一点,但是这很难管理超过400列,这可能会增加。我的直觉是做一个类似以下的循环:

    for each value in ('001', '002', '003'.................'400')
    -->loop code for single column concatenating the value each time
现在我知道这既不高效也不明智,所以我正在寻找处理如此大量列的最佳方法

编辑:以下要求的一些示例数据:

表1: 表2: 期望输出
更可能的情况是,您可以使用一个视图来连接这两个表。 如果您在为该查询编写400列查询时遇到问题,您至少可以执行一些查询来编写该查询

我建议您可以做如下操作:

Select sc0.name
 from sys.sysobjects so0
 join sys.syscolumns sc0 on sc0.id =  so0.id
 join sys.syscolumns sc1 on sc1.name = so0.name
 join sys.sysobjects so1 on sc1.id =  so1.id
 where so0.xtype = N'U' and so1.xtype = N'U'
 and so0.name = N'Table 1'
 and so1.name = N'Table 2'
上面的查询将返回两个表中所有匹配的列。
使用它来自动创建视图并使用视图。

您是否看起来像这样,不是真的,我认为该示例将相似的行放在一起,组合一列,我有大量的列,不需要新表中同一行的数据,谢谢,请坦率地解释lil more。输出不清楚。什么是列“xxx”?如何命名\u A\u xxx+名称\u B\u xxx?用“001”、“002”中的值替换xxx,例如'003'……'400',那么Name_A_001+Name_B_001,然后下一个循环将是Name_A_002+Name_B_002;在示例中使两个表都简短,只说10列。用样本数据填充。现在将传递什么参数以及输出应该是什么样子。使用sq l-fiddle man。肯定会使用我给出的链接。有什么问题吗否则,列名以001或002结尾。谢谢,我的连接工作正常,这是我的问题,这是自动化的,从逻辑上讲,我会使用where循环遍历每个列,但我知道这对于SQL来说是错误和低效的
    Date
    Machine
    plan_number
    plan_version
    plan_name
    Name_A_xxx + Name_B_xxx
    Count_xxx
    for each value in ('001', '002', '003'.................'400')
    -->loop code for single column concatenating the value each time
MACHINE PLAN_NUMBER PLAN_VERSION PLAN_NAME     Name_A_001     Name_B_001     Name_A_002     Name_B_002     Name_A_003     Name_B_003     Name_A_004     Name_B_004      Name_A_005      Name_B_005
3989    1           5            COMBINED_101  DUB_INW_D_124  Top            PTL_INW_N_423                 CRK_INW_U_325                 CRK_INW_S_323                  PTL_INW_L_421
3994    1           5            COMBINED_102  DUB_INW_D      Top            PTL_INW_N                     CRK_INW_U                     CRK_INW_S                      PTL_INW_L      
Date        MACHINE PLAN_NUMBER PLAN_VERSION COUNT_001 CHECK_001 COUNT_002 CHECK_002 COUNT_003 CHECK_003 COUNT_004 CHECK_004 COUNT_005 CHECK_005
11/02/2014  3989    1           5            4         0         39        0         11        0         2         0         1         0
11/02/2014  3989    1           5            2         0         51        0         16        0         1         0         6         0
11/02/2014  3994    2           15           44        1         317       0         275       1         124       0         106       0
11/02/2014  3989    1           5            11        0         112       0         61        0         15        0         7         0
11/02/2014  3989    1           5            64        0         543       0         0         0         114       0         4         0
11/02/2014  3994    2           15           61        0         734       1         0         0         101       0         4         0
11/02/2014  3989    1           5            0         0         0         0         0         0         0         0         0         0
11/02/2014  3989    1           5            166       0         1344      0         0         0         215       0         32        1
11/02/2014  3994    2           15           13        0         87        0         0         0         35        0         1         0
11/02/2014  3989    1           5            3         0         9         0         0         0         1         0         0         0
Date        MACHINE  PLAN_NUMBER  PLAN_VERSION  PLAN_NAME     Name_A_xxx + Name_B_xxx  Count_xxx
11/02/2014  3989     1            5             COMBINED_101  DUB_INW_D_124 Top        4
11/02/2014  3989     1            5             COMBINED_101  DUB_INW_D_124 Top        2
11/02/2014  3994     2            15            COMBINED_102  DUB_INW_D Top            44
11/02/2014  3989     1            5             COMBINED_101  DUB_INW_D_124 Top        11
11/02/2014  3989     1            5             COMBINED_101  DUB_INW_D_124 Top        64
11/02/2014  3994     2            15            COMBINED_102  DUB_INW_D Top            61
11/02/2014  3989     1            5             COMBINED_101  DUB_INW_D_124 Top        0
11/02/2014  3989     1            5             COMBINED_101  DUB_INW_D_124 Top        166
11/02/2014  3994     2            15            COMBINED_102  DUB_INW_D Top            13
11/02/2014  3989     1            5             COMBINED_101  DUB_INW_D_124 Top        3
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_N_423            39
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_N_423            51
11/02/2014  3994     2            15            COMBINED_102  PTL_INW_N                317
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_N_423            112
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_N_423            543
11/02/2014  3994     2            15            COMBINED_102  PTL_INW_N                734
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_N_423            0
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_N_423            1344
11/02/2014  3994     2            15            COMBINED_102  PTL_INW_N                87
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_N_423            9
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_U_325            11
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_U_325            16
11/02/2014  3994     2            15            COMBINED_102  CRK_INW_U                275
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_U_325            61
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_U_325            0
11/02/2014  3994     2            15            COMBINED_102  CRK_INW_U                0
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_U_325            0
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_U_325            0
11/02/2014  3994     2            15            COMBINED_102  CRK_INW_U                0
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_U_325            0
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_S_323            2
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_S_323            1
11/02/2014  3994     2            15            COMBINED_102  CRK_INW_S                124
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_S_323            15
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_S_323            114
11/02/2014  3994     2            15            COMBINED_102  CRK_INW_S                101
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_S_323            0
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_S_323            215
11/02/2014  3994     2            15            COMBINED_102  CRK_INW_S                35
11/02/2014  3989     1            5             COMBINED_101  CRK_INW_S_323            1
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_L_421            1
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_L_421            6
11/02/2014  3994     2            15            COMBINED_102  PTL_INW_L                106
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_L_421            7
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_L_421            4
11/02/2014  3994     2            15            COMBINED_102  PTL_INW_L                4
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_L_421            0
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_L_421            32
11/02/2014  3994     2            15            COMBINED_102  PTL_INW_L                1
11/02/2014  3989     1            5             COMBINED_101  PTL_INW_L_421            0
Select sc0.name
 from sys.sysobjects so0
 join sys.syscolumns sc0 on sc0.id =  so0.id
 join sys.syscolumns sc1 on sc1.name = so0.name
 join sys.sysobjects so1 on sc1.id =  so1.id
 where so0.xtype = N'U' and so1.xtype = N'U'
 and so0.name = N'Table 1'
 and so1.name = N'Table 2'