Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何将多个Datatable(DataColumn)连接到一个单独的列中?_Sql_Sql Server - Fatal编程技术网

Sql 如何将多个Datatable(DataColumn)连接到一个单独的列中?

Sql 如何将多个Datatable(DataColumn)连接到一个单独的列中?,sql,sql-server,Sql,Sql Server,我有以下3个查询语句: sSQLSting1 = "SELECT * From Column1" sSQLSting2 = "SELECT * From Column2" sSQLSting3 = "SELECT * From Column3" Edit:Column1是表1的名称,但它只是一列 我想将它们全部连接到新Datatable的不同列中,但尝试使用时: sSQLSting1&“Union”&sSQLSting2&“Union”&sSQLSting3,但列表仅返回一列 我希望的结果是

我有以下3个查询语句:

sSQLSting1 = "SELECT * From Column1"
sSQLSting2 = "SELECT * From Column2"
sSQLSting3 = "SELECT * From Column3"

Edit:Column1是表1的名称,但它只是一列

我想将它们全部连接到新Datatable的不同列中,但尝试使用时:
sSQLSting1&“Union”&sSQLSting2&“Union”&sSQLSting3
,但列表仅返回一列

我希望的结果是创建一个包含上述所有列的表,因此我的问题是: 我可以只使用一条查询语句来实现这一点,还是必须迭代并为每个列添加数据?(我用的是c#)


非常感谢

也许这会有所帮助

同样,没有正确顺序的GTD。此外,假设每个表中的行数相同

示例

Select Col1 = A.SomeColumn
      ,Col2 = B.SomeColumn
      ,Col3 = C.SomeColumn
 From ( Select SomeColumn,RN=row_number() over (order by SomeColumn ) from Column1 ) A
 Join ( Select SomeColumn,RN=row_number() over (order by SomeColumn ) from Column2 ) B on A.RN=B.RN
 Join ( Select SomeColumn,RN=row_number() over (order by SomeColumn ) from Column3 ) C on A.RN=C.RN
编辑另一个选项是轴

Select *
 From  (
        Select Value=SomeColumn,Col=1,RN=row_number() over (order by SomeColumn ) from Column1
        Union All
        Select Value=SomeColumn,Col=2,RN=row_number() over (order by SomeColumn ) from Column2
        Union All
        Select Value=SomeColumn,Col=3,RN=row_number() over (order by SomeColumn ) from Column3
       ) src
 Pivot (max(value) for Col in ([1],[2],[3]) ) pvt

这可能是客户端最简单的操作:

for(int x = 1; x < dts.Length; x++){
  dts[0].Columns.Add(dts[x].Columns[0].ColumnName);

  for(int y = 0; y <  dts[x].Rows.Count; y++)
    dts[0].Rows[y][x] = dts[x].Rows[y][0];

}
for(int x=1;x
它将处理数组中任意数量的数据表(称为dts)——如果是列表,则将长度更改为Coubt等

所有列名称都必须是唯一的(您的列名称是唯一的)-可以添加逻辑以将某些内容附加到名称以使其唯一

所有数据都复制到数组中的第一个表中


如果列不是字符串,则可以通过采用dts[x]的类型来添加添加到dts[0]的新列的类型。列[0]

给出了示例数据和所需结果。这是完全不清楚的。你有一张叫Column1的桌子吗?它包含哪些列?有一个名为Column1的表吗?您的命名约定有点混乱。也许一个小的数据样本和期望的结果将是一个更好的可视化HI,感谢评论,我已经更新了帖子!好的,您已经给出了示例结果,但没有给出附带的源数据。具体来说,表中的行是如何相互映射的?这是一个连接而不是联合,但您需要一些东西来连接onHi,我想根据行位置、列1中的行1和列2中的行1分别添加它们。。。新表中的同一行。(他们之间没有亲戚关系)非常感谢,我会尝试你的查询,这让我很困惑。@TheGridLock试一试。第一种方法是使用一个row_number()生成一个公共键来连接。第二种方法是使用row_number()作为分组依据。@TheGridLock这里真正的问题是您的设计。您有3个表,每个表有一列。没有真正的方法将单元格值与下一个单元格值关联起来。非常感谢您对我的澄清!“我理解这个问题。”僵局总是乐于助人