【问题标题】:Split t-sql results into data tables, by non-numerical value in a field通过字段中的非数值将 t-sql 结果拆分为数据表
【发布时间】:2017-06-15 16:18:37
【问题描述】:

我编写了一个 C# 程序,将 t-SQL 记录输出到 Excel 电子表格中的单独选项卡中,按记录所属的人进行拆分。

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

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

有没有办法使用 SQL / C# 使用 order 或 group by 之类的方法来做到这一点;还是我必须得到我的结果,选择人员列表,然后为该特定人员循环每个 SQL 查询并将其输入到新的数据表中?

我想在我做长路之前问是否有人知道短路,因为这不是一件不寻常的事情;所以我怀疑一定有更简单的方法。

【问题讨论】:

  • 据我所知,每个 SELECT 语句都会得到一个 DataTable。 “长”的方式实际上并不是很长的代码,所以除非性能是一个问题,否则我建议你去吧。
  • 谢谢。只是想在我花了一天的时间编码之前检查一下,然后发现有一种 2 行通常的方式来做到这一点。
  • 好吧,您可能只需选择所有内容,然后使用 LINQ 对数据进行分组并填充您的数据表。不应该花一天的时间;)看看this是否有帮助。
  • Michal S:如果你给出这个作为答案,我会接受,因为你已经回答了我的问题“有没有不同的方法”。谢谢你,我已经开始工作了。

标签: c# tsql


【解决方案1】:

通常每个 SELECT 语句都会得到一个 DataTable。

但是,您可以只选择所有内容,然后使用 LINQ 对数据进行分组并填充您的数据表。看看this 有没有帮助。

【讨论】:

    【解决方案2】:

    这取决于表结构,以及源和目标。

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

    SELECT customer_key, customer_name, customer_address
    

    来自表_1 WHERE customer_key = @Customer_key

    UNION(或 UNION ALL)

    选择客户密钥、客户名称、客户地址 从表_2 WHERE Customer_key = @Customer_key

    联合等..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-24
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多