首页 > 解决方案 > 从列(SQL-DataTable)中提取重复的日期和时间并将它们显示为 MVC Web App 上的列标题

问题描述

我是编程新手。我创建了一个 Web 应用程序 (MVC4),它显示来自 SQL 的表,例如:

----------------------------------
Wavelength | Values | Date | Time
----------------------------------
228        | 0      |10 Oct| 9:00
229        | 0.5    |10 Oct| 9:00
.            .       .       .
.            .       .       .
.            .       .       .
228        | 0.1    |11 Oct| 8:00
229        | 0.3    |11 Oct| 8:00
.            .       .       .
.            .       .       .
.            .       .       .
228        | 0.6    |11 Oct| 10:00
229        | 0.2    |11 Oct| 10:00
----------------------------------

我怎样才能显示它:

-------------------------------------
           | 10 Oct |     11 Oct        
           --------------------------
Wavelength | 09:00  | 08:00  | 10:00
           --------------------------
           | Values | Values | Values 
-------------------------------------
228        | 0      | 0.1    | 0.6  
229        | 0.5    |  0.3   | 0.2 
------------------------------------

我应该选择 Dynamic SQL Pivot 还是可以通过一些客户端技术来实现。请提出建议。

如果您发现这个问题不具体,我很抱歉。

谢谢 :)

标签: javascriptsqlsql-serverdatatablepivot

解决方案


这样你可以做动态旋转,这段代码在sql server中测试过,

 declare @allval varchar(500) 
 declare @sql varchar(500)

create table #table (wavelength varchar(50), value decimal(2,2), [date] varchar(10), [time] varchar(10))


insert into #table values
(228 ,0,'10 oct','9:00'),
(229 ,0.5,'10 oct','9:00'),
(228 ,0.1,'11 oct','8:00'),
(229 ,0.3,'11 oct','8:00'),
(228 ,0.6,'11 oct','10:00'),
(229 ,0.2,'11 oct','10:00')

select @allval = (select  Stuff((SELECT distinct ', ' + concat('[',date,' ',time,']')
         FROM #table l
         FOR XML PATH('')),1,1,'') )



 select @sql = 'select * from
(select concat(date,'' '',time) as datetime,wavelength,value from #table )j
pivot (max(value)
for [datetime] in(' + @allval+ '))p'

exec(@sql)

drop table #table

推荐阅读