sql分组条件


with tem as
(SELECT t.a,t.b,sum(t.c) FROM tablename t
WHERE t.d = 3
GROUP by t.a,t.b)
SELECT * from tem

这个'where t.d = 3'条件怎么能放到括号外面查询

xiaomili 发布于 2019-11-19 10:22
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
axingLv6专家互助
发布于2019-11-19 10:24
with tem as
(SELECT t.a,t.b,t.d,sum(t.c) FROM tablename t
GROUP by t.a,t.b,t.d)
SELECT * from tem where d=3


  • xiaomili xiaomili(提问者) 你这样的话查出来的数据就变了
    2019-11-19 10:27 
  • axing axing 回复 xiaomili(提问者) 就是多了一列d,结果一样
    2019-11-19 10:46 
最佳回答
0
张洪威Lv6高级互助
发布于2019-11-19 10:24

你select 的字段是t.a,t.b,sum(t.c) 这三个,就等于你的tem表只有这三个字段。

t.d不在这三个字段里面,肯定放不到外面啊。

  • xiaomili xiaomili(提问者) 没有解决办法吗
    2019-11-19 10:28 
  • 张洪威 张洪威 回复 xiaomili(提问者) 你不需要拿出来啊,就放里面加过滤也一样。
    2019-11-19 10:29 
  • xiaomili xiaomili(提问者) 回复 张洪威 我想优化一下,要是能拿出来就方便做视图了
    2019-11-19 10:32 
  • 张洪威 张洪威 回复 xiaomili(提问者) 你视图要用这个字段写过滤,那肯定要先取出这个字段来。那你只能后面的sql再group by 写一次了,没办法先group by且还不用这个字段。
    2019-11-19 10:38 
最佳回答
0
shirokoLv6资深互助
发布于2019-11-19 10:25

with tem as
(SELECT t.a,t.b,sum(t.c) FROM tablename t
GROUP by t.a,t.b)
SELECT * from tem

WHERE tem.d = 3

  • xiaomili xiaomili(提问者) 你这样的话查出来的数据就变了
    2019-11-19 10:27 
  • shiroko shiroko 回复 xiaomili(提问者) 那当然啦他本来就是筛选后分组,你要拿出来就是没有筛选了,当然变了。。话说,你要拿出来的意义是什么?
    2019-11-19 10:28 
  • xiaomili xiaomili(提问者) 回复 shiroko 优化一下我要
    2019-11-19 10:31 
  • shiroko shiroko 回复 xiaomili(提问者) 能说清楚吗,打哑谜我猜不到
    2019-11-19 10:33 
  • 4关注人数
  • 425浏览人数
  • 最后回答于:2019-11-19 10:25
    请选择关闭问题的原因
    确定 取消
    返回顶部