【问题标题】:combine two tables into one result set sql server将两个表合并为一个结果集 sql server
【发布时间】:2014-04-25 19:31:26
【问题描述】:

我有一个存储过程,它反序列化一个 XML 字符串并将其添加到表格中;

MonthDate        floatValue
01/01/2014       10,123.23
02/03/2014       11,324.34

等等。 然后,我有一组模拟结果,我需要与这些日期相对应,但它们位于逗号分隔的数据集中,格式如下;

[123.43,125.34,134.33],[124.33,143.33,234.22],etc..

我编写了一个函数,将字符串解析为一个包含 1 列的表和该数据的 groupID,如下所示;

tempID        floatValue
1             123.43
1             125.34
1             134.33
2             124.33
2             143.33
2             234.22

我尝试在第二组数据上使用数据透视表,但聚合破坏了数据集,因为我必须按照特定顺序将它们与我的第一个反序列化 XML 结果中的日期相关联。基本上我想要的结果是这样的;

MonthDate     MedianResult    temp1    temp2    etc..
01/01/2014    10,123.23       123.43   124.33
02/03/2014    11,324.34       125.34   143.33

这真的是我能解释的最好的了,我编写了查询来获取我展示的结果集,但不知道如何“组合”两个表来获得我要查找的内容。

【问题讨论】:

  • 将字符串解析为包含 1 列和 groupID 的表的函数,是否可以对其进行修改以添加序列 ID 1、2、3 以确保将正确的顺序应用于浮点值或浮点值是否总是从最低到最高?如果您确实添加了 1,2,3,则 case 语句可以使用 1,2,3; 获得所需的结果;否则你必须使用伪值或临时值来维持秩序;并且选择不能保证与插入相同的顺序......所以知道具体的顺序,或者它总是从最低到最高有帮助。

标签: sql sql-server-2008 dataset pivot-table reportbuilder3.0


【解决方案1】:

您是否尝试过添加分区 id 并从那里进行旋转?诚然,此示例将对值进行升序排序,但从概念上讲,它是一个开始吗?

ROW_NUMBER() OVER (PARTITION BY [tempID] ORDER BY [floatValue]) AS [RowNumber]

【讨论】:

  • 我决定采用与使用数据透视表不同的方法。由于我动态地创建要合并的两个表,因此我决定在原始 MonthDate 表上使用自动增量标识并创建一个单独的 ID 行,该 ID 行通过每个 tempID 的总行数递增。这样每个 tempID (2-12) 也将有一个介于 1 和 113(或更多)之间的 ID 列,它与日期标识完全匹配。然后我就加入了 ID 上的表格,效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
  • 2012-12-16
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
相关资源
最近更新 更多