我必须加入两个不同的表来获得我的结果。 表格资源'它很简单,而表格的尺寸。[代码]'其中包含一个具有不同值的列(即:
Code
SILO
GRADE
OTHER 1
OTHER2
这就是为什么连接两次该列以获得两个名为GRADE和SILO的不同列的原因。
现在,我有一个查询,选择组内成绩的最大值,如下所示:
`SELECT
R.[ID] -- If I inserted that here, it is not working obviously.
-- This cannot But this is the additional column I need (see later)
DD_SILO.[Value] DIR ,
max(R.[GRADE]) GRADE_DIR
FROM [Resource] R
LEFT JOIN
Dimension DD_SILO ON R.[ID] = DD_SILO.[ID] AND DD_SILO.[Code] = 'SILO'
group by DD_SILO.[Value]'
我需要的是,除了GRADE AND SILO之外,还有ID名称,它包含在[Resource]表中。 请注意[资源] .ID = [维度] .ID
我会用ROW_NUMBER()来解决问题,选择组中的最高级别,然后避免然后按'分组,但是因为查询必须插入更大的一个,所以需要太多时间跑。我正在使用Microsoft SQL Server 2016。
答案 0 :(得分:0)
SELECT
MAX(R.[ID]) as ID ,
DD_SILO.[Value] DIR ,
max(R.[GRADE]) GRADE_DIR
FROM [Resource] R
LEFT JOIN
Dimension DD_SILO ON R.[ID] = DD_SILO.[ID] AND DD_SILO.[Code] = 'SILO'
group by DD_SILO.[Value]
答案 1 :(得分:0)
您可以使用虚拟表格: -
`
select
a.max_grade_silo,
a.max_grade_value,
(select max(r.id)
from [resource] r,
[dimension] d
where r.[ID] = d.[ID] and
d.[CODE]= 'SILO' and
r.[GRADE] = a.[max_grade_value]
),
max_grade_silo a
from
(SELECT
DD_SILO.[Value] DIR ,
max(R.[GRADE]) GRADE_DIR
FROM [Resource] R
LEFT JOIN
Dimension DD_SILO ON R.[ID] = DD_SILO.[ID] AND DD_SILO.[Code] = 'SILO'
group by DD_SILO.[Value]
) temp_result (max_grade_silo, max_grade_value)
'
看看规范化表格可能会更好吗?