我有一个名为Tests
的表和一个表Points
以及许多其他链接表。
我试图选择测试信息的摘要,其中包括来自其他表的数据。到目前为止,一切都工作正常,只有一列连接到Tests
选择查询中的值。到现在为止还挺好。
但是,这里是我正在努力的地方:对于每个测试,在Points
表中记录了一系列点,这些点通过典型的外国/主要(主要/主要(PK / FK)密钥安排连接到Test
记录,并且有每个Points
通常有几百甚至几千个Test
。
对于每个Points
,Test
从1到n顺序编号,因此每个新Points
的Test
的编号再次从1开始。
在Tests
摘要选择中,我希望看到当Points.Value_X
时Points.Number = 1
的值和Points.Value_X
时值Points.Number = n
的另一列
我们的想法是根据点的订单号1以及该测试的最大订单号,从Points
表中检索两个值到测试摘要中。
Points.Value_X
是十进制数。
有人可以帮我查询吗?
提前致谢。
您可以使用条件聚合,如下所示:
select test_id,
max(case when num = 1 then value_x end) as value_x_1,
max(case when num = <n> then value_x end) as value_x_n
from points p
group by test_id;
运行查询时,<n>
值被假定为常量。