重新格式化SQL Query,可能是Pivot

时间:2012-10-06 20:37:28

标签: c# sql tsql sql-server-ce

Query

图像显示我的查询有两个表和输出。而不是输出采用图像格式,我需要如下。

Date Time   |   Load Cell 0   |   Load Cell 1
----------------------------------------------
03/06/2016         12                14
08/07/2016          4                7

我相信我可能需要使用Pivot ????但我只是坚持如何做到这一点。

我在Visual Studio中为C#Windows窗体应用程序执行此操作,数据将显示在数据网格中并用于图形/图表。使用的db是MS SQL CE文件。

如果有人可以提供帮助。提前谢谢。

3 个答案:

答案 0 :(得分:1)

select cast(test.datetime as date) [date], 
sum(case when loads.loads_cell = 0 then loads.kN end) [Load Cell 0], 
sum(case when loads.loads_cell = 1 then loads.kN end) [Load Cell 1]
from loads 
join tests on loads.test_id = tests.tests_id
group by cast(test.datetime as date)

答案 1 :(得分:1)

你认为这可以从PIVOT中获益是正确的。

SELECT TestDate, pvt.[0], pvt.[1]
FROM (
     SELECT t.DateTime as TestDate, l.Load_Cell_ID as LCID, l.kn
     FROM loads as l
     INNER JOIN Tests as t on l.Test_ID = t.Test_ID
     ) as inr
PIVOT (
     SUM(kn) FOR LCID in ([0], [1]) --specify additional load cell ids here
) as pvt

话虽如此,我不确定SQL CE是否具有pivot运算符。您可能必须使用嵌套查询,如t-clausen.dk建议的那样。

答案 2 :(得分:0)

我想如果你事先不知道列名 - 在你的情况下,SQL中的PIVOT不是一个选项。

我建议你在C#中以编程方式转动数据(不要将datagridview与查询数据绑定,将其与空数据表对象绑定并以编程方式填充该数据表)。

稍后添加:

你在评论中询问如何开始。

看看这个:C# pivot table

也许它看起来很复杂,但几乎“随时可以使用”。