如何解决SQL Server:将行过滤到列
我使用以下表格 A
select sn,processName,result
from xxxx
inner join xxxx on xxxx
inner join xxxx on xxxx
where processDate between xxx xxx
表A
sn | 进程名称 | 结果 |
---|---|---|
a01 | 深度测量 | 0.1 |
a01 | widthMeas | 2 |
a01 | 重量 | 11.6 |
b02 | 深度测量 | 0.2 |
b02 | widthMeas | 2.1 |
b02 | 重量 | 11.3 |
a24 | 深度测量 | 0.15 |
a24 | widthMeas | 2.2 |
a24 | 重量 | 11.5 |
如何转换表 A 或直接得到如下表?
sn | depthMeas | widthMeas | 重量 |
---|---|---|---|
a01 | 0.1 | 2.0 | 11.6 |
b02 | 0.2 | 2.1 | 11.3 |
a24 | 0.15 | 2.2 | 11.5 |
也许我可以使用 where 子句和 pivot 来转换它。但它必须运行多次(3 次)查询,这将需要很长时间(因为我的记录约为 350,000,000)
Power BI,我加载了 3 次原生查询表。
- 'depthMeas' 过滤表
- 'widthMeas' 过滤表
- “权重”过滤表。
然后将它们合并到一张表中。这需要在本机查询过程中花费大量时间。
提前致谢
解决方法
您可以使用 GROUP BY
,如下所示:
with
q as (
-- your query here
)
select
sn,max(case when processname = 'depthMeas' then result end) as depthmeas,max(case when processname = 'widthMeas' then result end) as widthmeas,max(case when processname = 'weight' then result end) as weight
from q
group by sn
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。