用于检索和显示结果的SQL查询

时间:2017-07-11 16:49:20

标签: sql-server

我是SQL的新手,请你按照下面的屏幕截图帮我检索值 enter image description here

以下是我的后端查询结果。

enter image description here 例如,如果DEG为0,我应该得到相应的值(对于高度5)'即(0.91,-0.29,-1.78,-2.05等)。同样,我必须按照屏幕截图L02Kj.png对值进行分组和显示。如果您需要更多信息,请告诉我

2 个答案:

答案 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

See live demo

<强>解释

我们在第一步中未对数据进行了分离,并且还从列中获取了代表性的增量角度值,这些值随后作为步骤添加到deg列值中。 在下一步中,我们围绕度数旋转高度列以获得所需的结果。

如果您需要移除围绕这些角度/高度的硬编码,请搜索动态枢轴/非透视。关于此问题,有很多问题。

相关问题