以下是我的后端查询结果。
例如,如果DEG为0,我应该得到相应的值(对于高度5)'即(0.91,-0.29,-1.78,-2.05等)。同样,我必须按照屏幕截图L02Kj.png对值进行分组和显示。如果您需要更多信息,请告诉我
答案 0 :(得分:0)
你想要的是一个动态的转轴......这是一个使用你的数据的基本例子(一些列)
create table #TempTable (HEIGHT int, DEG int, COL_1 decimal(3,2))
insert into #TempTable
values
(5,0,0.91),
(15,0,-0.29),
(25,0,-1.78),
(5,160,3.17),
(15,160,1.15)
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName= ISNULL(@ColumnName + ',','')
+ QUOTENAME(Height)
FROM (SELECT DISTINCT Height as Height FROM #TempTable) AS Height
--Prepare the PIVOT query using the dynamic
SET @DynamicPivotQuery =
N'SELECT DEG as Angle, ' + @ColumnName + '
FROM #TempTable
PIVOT(SUM(COL_1)
FOR Height IN (' + @ColumnName + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
drop table #TempTable
答案 1 :(得分:-1)
因此,您可以使用以下查询来获取所需内容。
假设您的表是一个名为yourtable
的表,下面的查询将为您提供结果。
select *
from
(
select
deg+cast(angles_col_increment as decimal(10,2))-10 as deg,
height,
angle_value
from
(
select
height,
deg,
[col_1] as [10],
[col_2] as [20],
[col_3] as [30],
[col_4] as [40],
[col_5] as [50],
[col_6] as [60],
[col_7] as [70],
[col_8] as [80]
from yourtable
)s
unpivot
(
angle_value for angles_col_increment in
(
[10],[20],[30],[40],
[50],[60],[70],[80]
)
)u
)s
pivot
(
max(angle_value) for height in
(
[5],[15],[25],[30.7]
)
)p
<强>解释强>
我们在第一步中未对数据进行了分离,并且还从列中获取了代表性的增量角度值,这些值随后作为步骤添加到deg列值中。 在下一步中,我们围绕度数旋转高度列以获得所需的结果。
如果您需要移除围绕这些角度/高度的硬编码,请搜索动态枢轴/非透视。关于此问题,有很多问题。