我得参加两张不同的桌子才能得到结果。表'Resource‘很简单,而表'Dimension.Code’除其他外,包含一个具有不同值的列(即:
Code SILO GRADE OTHER 1 OTHER2
这就是为什么一个连接是该列的两倍,以得到两个不同的列,称为年级和筒仓。
现在,我有一个查询,它选择组内某个级别的最大值,如下所示:
`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]' 我需要的基本上是,除了年级和筒仓之外,还有ID名称,它包含在资源表中。请注意Resource.ID = Dimension.ID
我本来可以解决ROW_NUMBER ()选择组内最高值的问题,然后避免“group by”,但是由于查询必须插入到更大的查询中,这将花费太多的时间来运行。我正在使用2016。
发布于 2017-03-30 07:24:09
你能用一个虚拟的桌子吗?
`
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)
'或许最好还是把桌子正常化吧?
发布于 2017-03-30 07:14:49
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]https://stackoverflow.com/questions/43110421
复制相似问题