首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle SQL如何在case中绕过group by子句

问Oracle SQL如何在case中绕过group by子句
EN

Stack Overflow用户
提问于 2015-03-24 16:59:27
回答 1查看 402关注 0票数 0

我在返回唯一记录时遇到了问题,因为必须对特定字段使用GROUP BY,因为它在CASE WHEN子句中。下面是查询:

代码语言:javascript
复制
SELECT L.COLUMN1                 AS COL1,
ROUND(L.COLUMN2 * 1000) AS COL2,
CASE
  WHEN L.COLUMN3 >= 20 AND L.COLUMN4 = 3
  THEN 'Y'
  ELSE 'N'
END AS COMPLETED,
CASE
  WHEN COUNT(DISTINCT VC.COLUMN5)= 0
  OR (COUNT(DISTINCT VC.COLUMN5) > 0
  AND SUM(VC.COLUMN10)              =SUM(VC.COLUMN11))
  THEN 'Y'
  WHEN COUNT(DISTINCT VC.COLUMN5) > 0      
  AND SUM(VC.COLUMN10)             <>SUM(VC.COLUMN11)
  AND VC.COLUMN8 IN (SELECT S.CODE_ID FROM TABLE5 S
  WHERE S.COLUMN6 = 'C' AND S.COLUMN7 = 'SVS')
  THEN 'S'
  ELSE 'N'
END AS YNS,
NVL(
CASE
 WHEN COUNT(DISTINCT LL.COLUMN12)> 0
 THEN 'N'
 ELSE 'Y'
 END,'Y') AS YN
FROM TABLE1 L
 LEFT OUTER JOIN TABLE2 VC
 ON L.COLUMN1 = VC.COLUMN5
 LEFT OUTER JOIN TABLE3 LL
 ON L.COLUMN9 = LL.COLUMN9
 AND LL.COLUMN1 = L.COLUMN1
WHERE L.OIIN='O'
 AND L.COLUMN3 < 90
GROUP BY L.COLUMN1,
 L.COLUMN2 ,
 L.COLUMN3,
 L.COLUMN4, 
 VC.COLUMN8;

这里导致重复的部分是

代码语言:javascript
复制
WHEN COUNT(DISTINCT VC.COLUMN5) > 0      
  AND SUM(VC.COLUMN10)             <>SUM(VC.COLUMN11)
  AND VC.COLUMN8 IN (SELECT S.CODE_ID FROM TABLE5 S
  WHERE S.COLUMN6 = 'C' AND S.COLUMN7 = 'SVS')
  THEN 'S'

因为它在最后有一个由VC.COLUMN8组成的组。如果我删除group by,那么我得到的错误是这不是一个group by表达式。如何删除group by,并在表中仅返回COL1的唯一记录,如果COL1的任何记录满足以下要求,我仍然会得到一个"S“填充?

代码语言:javascript
复制
WHEN COUNT(DISTINCT VC.COLUMN5) > 0      
  AND SUM(VC.COLUMN10)             <>SUM(VC.COLUMN11)
  AND VC.COLUMN8 IN (SELECT S.CODE_ID FROM TABLE5 S
  WHERE S.COLUMN6 = 'C' AND S.COLUMN7 = 'SVS')
  THEN 'S'
EN

回答 1

Stack Overflow用户

发布于 2015-03-24 17:23:52

您应该了解,在GROUP BY子句中没有VC.COLUMN8的查询中,查询的每个输出行可能有多个VC.COLUMN8值。因此,查询无法解析VC.COLUMN8是否在由子查询定义的列表中。

您必须解决这个逻辑问题才能知道如何继续--您的意思是要测试子查询中是否至少有一个VC.COLUMN8的值,或者所有值都必须在子查询中?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29228460

复制
相关文章

相似问题

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