【发布时间】:2014-04-08 04:39:05
【问题描述】:
我将相当多的数据连接在一起,但我需要旋转这些数据,然后从该查询中选择我想要的字段。数据看起来有点像这样:
ID OrderNo Product ProductID MetricID Metric 值
111 G456789 M12345 10 89 机器 7
111 G456789 M12345 10 90 MachineID 2020
111 G456789 M12345 10 91 长度 1951
上面的结果集可以有任意数量的指标(50 甚至 100 或更多)。该系统是可配置的,因此他们可以添加指标,这意味着我不能真正“硬编码”任何会使 SQL 无效的东西。
当 ID 不同时(如上面的 111),这将是一行。 OrderNo、Product 和 ProductID 也将相同,但 ID 是枢轴的关键。
透视结果集需要这样处理:
ID OrderNo Product ProductID Machine MachineID长度
111 G456789 M12345 10 7 2020 1951
由于可以有任意数量的指标,我希望它们都在该行中。
现在 - 在我说完这一切之后......我只想查询我需要的变量的结果集。因此,有可能(在上面的示例中)我只查询 ID、产品、机器和长度。
我确信这可以做到.. 只是困惑如何!玩了几个小时试图弄清楚:(
【问题讨论】:
-
发布您的尝试,如果您尝试过,人们会更愿意提供帮助。
-
加入非常疯狂并且非常专有。为了我的客户,我不能发布该代码。我可以说的是,我围绕整个事物运行了一个选择(疯狂连接结果集),使用了“pivot”并查询了我需要的特定指标。但是,我发现它仍然列出了其余部分......所以除非我知道如何在查询整个集合后只选择我需要的那些,否则枢轴将不起作用。
-
所以,像这样:从(疯狂连接结果)中选择 ID、产品、机器、机器 ID、长度(最大(结果)为 Metric in ([Machine]、[MachineID]、[Length) ]))
-
仅供参考 - 没用 ;)
-
@cbseo 为什么这不起作用?
标签: sql sql-server tsql pivot pivot-table