2017-06-15 42 views
0

我正在编写一个C#程序,以将t-SQL记录输出到Excel电子表格中的单独选项卡中,由记录所属的人员进行拆分。通过字段中的非数值将t-sql结果拆分为数据表

我已经看到,我可以在一个数据集中有许多数据表,并将每个数据表转换为单独的选项卡(how to store multiple DataTables into single DataSet in c#?),所以现在我需要填充我的数据表。

我没有一个固定的人员列表,每次程序运行时都会有所不同,并且一个人可能有任何数量的记录分配给他们。

有没有这样做使用SQL/C#使用类似的顺序或分组依据;还是必须得到我的结果,拿起人员列表,然后循环每个SQL查询以查找特定人员并将其提交到新的数据表中?

以为我会问,如果有人知道在我走了很长的路之前有一段短暂的路,因为这不是一件不寻常的事;所以我怀疑必须有一个更简单的方法。

+0

据我所知,每个SELECT语句都会得到一个DataTable。 “长”的方式实际上不是很长的代码明智的,所以除非性能是一个问题,否则我建议你去做。 –

+0

谢谢。只是想在我花了一天的编码之前进行检查,然后发现有一个2线通常的做法。 – Louise

+0

那么你可能只是选择一切,然后使用LINQ来分组数据并填充你的DataTables。不应该花一天;)看看[这](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/creating-a-datatable-from-a-query-linq-到数据集)是任何帮助。 –

回答

1

通常你会得到o ne数据表每个SELECT语句。

但是,您可以选择所有内容,然后使用LINQ将数据分组并填充您的DataTable。看看this是否有帮助。

0

它依赖于表结构,以及源和目的地一样。

如果您有多个源表,您可以将它们与UNION语句一起附加。这给出了所有表格的独特价值。您可以使用UNION ALL来保留重复值。

SELECT customer_key, customer_name, customer_address 

FROM TABLE_1 WHERE的customer_key = @Customer_key

UNION(或UNION ALL)

SELECT的customer_key,CUSTOMER_NAME,customer_address FROM TABLE_2 WHERE的customer_key = @Customer_key

UNION等..