【发布时间】:2021-06-25 01:35:54
【问题描述】:
我一直在 PIVOT、UNPIVOT 等中寻找解决方案,但仍然没有看到我的方案。我的桌子上有物品。为简单起见,我们只说 PartNum, Desc。这些东西可以定制。颜色、高度、宽度、深度等属性存储在一个单独的表中,并带有一个代码来指示哪个属性。
OrderId - PartNum - Desc (join from inv)
1 12345 - Block A
2 12345 - Block A
3 23456 - Block B
4 23456 - Block B
两个客户得到 12345,两个得到 23456,他们有宽度、高度和深度......
AttrId - OrderId - CCode - Value
1 1 WIDTH 10
2 1 HEIGHT 10
3 1 DEPTH 1
4 2 WIDTH 20
5 2 HEIGHT 10
6 2 DEPTH 1
7 3 WIDTH 10
8 3 HEIGHT 20
9 3 DEPTH 2
10 4 WIDTH 10
11 4 HEIGHT 20
12 4 DEPTH 2
我不能在值上使用带有聚合的枢轴,因为我需要像这样对部分、宽度、高度和深度的每个组合进行分组
PartNum - Width - Height - Depth - Count - Area (w x h x count)
12345 10 10 1 1 100
12345 20 10 1 1 200
23456 10 20 2 2 400
我尝试使用 CCode 进行 case 语句,但我在某些行中得到空值,因此分组不起作用。如果这有所不同,这在 SQL Server 2019 中。有人可以帮忙吗?
【问题讨论】:
-
那么
Area从何而来? -
caseexpression 不是 statement :) -
@GordonLinoff 面积的计算并不是问题的重点。这是如何将行放入列并将它们展平。
-
@DaleK w3schools.com/sql/sql_case.asp 案例陈述
-
@HeyMikey w3schools 完全错误,请参阅Official Documentation
标签: sql sql-server flatten sql-server-2019