首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地仅返回特定/每个列的最大值

如何正确地仅返回特定/每个列的最大值
EN

Stack Overflow用户
提问于 2019-12-08 01:14:25
回答 1查看 31关注 0票数 1

这是我的MSSQL查询的结果:

我想实现的下一步是:

我想只为每列选择最大数字,Kitchen, Bar, Pizzeria and Barbecue

我知道我可以通过4个不同的问题来解决这个问题,比如:

代码语言:javascript
复制
  SELECT MAX(LastOrdinalNumber), Bar
  FROM tblDemoOrdinalNumbers
  WHERE Bar = 1
  GROUP BY Bar

  SELECT MAX(LastOrdinalNumber) as [LastOrdinalNumber], Kitchen
  FROM tblDemoOrdinalNumbers
  WHERE Kitchen = 1
  GROUP BY Kitchen

  SELECT MAX(LastOrdinalNumber) as [LastOrdinalNumber], Pizzeria
  FROM tblDemoOrdinalNumbers
  WHERE Pizzeria = 1
  GROUP BY Pizzeria

  SELECT MAX(LastOrdinalNumber) as [LastOrdinalNumber], Barbecue
  FROM tblDemoOrdinalNumbers
  WHERE Barbecue = 1
  GROUP BY Barbecue

但是,有没有可能以某种方式获得一个查询结果,比如:

所以基本上,如果可能的话,我会得到4个数字,表示4列的最大值(在第10列中,3列的最大值是10,但这无关紧要,不要让它把你搞糊涂了。)

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-08 01:18:18

您可以很容易地对每个最大值使用单独的列:

代码语言:javascript
复制
select max(case when kitchen = 1 then LastOrdinalNumber end) as kitchen,
       max(case when bar = 1 then LastOrdinalNumber end) as bar,
       max(case when Pizzeria = 1 then LastOrdinalNumber end) as Pizzeria,
       max(case when Barbecue = 1 then LastOrdinalNumber end) as Barbecue      
from tblDemoOrdinalNumbers ;

如果需要行中的值,可以连接回原始表::

代码语言:javascript
复制
select don.*
from (select max(case when kitchen = 1 then LastOrdinalNumber end) as kitchen,
             max(case when bar = 1 then LastOrdinalNumber end) as bar,
             max(case when Pizzeria = 1 then LastOrdinalNumber end) as Pizzeria,
             max(case when Barbecue = 1 then LastOrdinalNumber end) as Barbecue      
      from tblDemoOrdinalNumbers
     ) x join
     tblDemoOrdinalNumbers don
     on don.LastOrdinalNumber in (kitchen, bar, Pizzeria, Barbecue)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59228425

复制
相关文章

相似问题

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