首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按函数在Group中选择和联接列

按函数在Group中选择和联接列
EN

Stack Overflow用户
提问于 2017-03-30 06:44:59
回答 2查看 91关注 0票数 1

我得参加两张不同的桌子才能得到结果。表'Resource‘很简单,而表'Dimension.Code’除其他外,包含一个具有不同值的列(即:

Code SILO GRADE OTHER 1 OTHER2

这就是为什么一个连接是该列的两倍,以得到两个不同的列,称为年级和筒仓。

现在,我有一个查询,它选择组内某个级别的最大值,如下所示:

代码语言:javascript
复制
`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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-30 07:24:09

你能用一个虚拟的桌子吗?

代码语言:javascript
复制
`
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)
'

或许最好还是把桌子正常化吧?

票数 0
EN

Stack Overflow用户

发布于 2017-03-30 07:14:49

代码语言:javascript
复制
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]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43110421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档