0

询问

该图像显示了我的带有两个表和输出的查询。而不是输出是图像中的格式,我需要它如下。

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

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

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

如果有人可以帮忙。提前致谢。

4

3 回答 3

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)
于 2012-10-06T20:50:58.133 回答
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 是否具有枢轴运算符。正如 t-clausen.dk 建议的那样,您可能必须使用嵌套查询。

于 2012-10-06T20:56:43.647 回答
0

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

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

后来补充:

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

看看这个:C# 数据透视表

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

于 2012-10-06T22:29:38.563 回答