SQL-选择分组依据中未列出的相同值
在SQL中,是否可以选择SQL-选择分组依据中未列出的相同值,sql,group-by,Sql,Group By,在SQL中,是否可以选择GROUPBY子句中列出的非列的相同的值(如果存在) 换言之,我希望能够做到以下几点: SELECT a, IDENTICAL_VALUE(b) FROM x GROUP BY a; 因此,idential\u VALUE应返回x.b的值(如果相同(即唯一),否则返回NULL。您可以计算不同的值,如果只有一个值,只需返回MAX SELECT a, CASE WHEN COUNT(DISTINCT b) =1 THEN MAX(b) END FROM
GROUPBY
子句中列出的非列的相同的值(如果存在)
换言之,我希望能够做到以下几点:
SELECT a, IDENTICAL_VALUE(b)
FROM x
GROUP BY a;
因此,
idential\u VALUE
应返回x.b
的值(如果相同(即唯一),否则返回NULL
。您可以计算不同的值,如果只有一个值,只需返回MAX
SELECT a,
CASE WHEN COUNT(DISTINCT b) =1 THEN MAX(b) END
FROM x
GROUP BY a;
或者,也可以(由于不需要实际识别不同的值,因此性能可能更好)
和什么一样?到a?在“唯一”的意义上是相同的-即当
b
的所有值(按a
分组)都相同时。这是一个很好的解决方案,但应注意,这将忽略b
列中的任何NULL
值(即,如果b
列包含两个值1
和NULL
,则这将返回1
,而不是NULL
)@emkey08 null不是值。如果您想将它们作为值来计算,则不清楚该方法是什么。null
通常不被视为等于null
,因此两个null是一个不同的值还是两个不同的值?在任何情况下,您都可以将count(*)
与count(b)进行比较
以确定是否存在任何null
(如果存在,则为多少),并根据需要更改逻辑。
SELECT a,
CASE WHEN MAX(b) = MIN(b) THEN MAX(b) END
FROM x
GROUP BY a;