Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-选择分组依据中未列出的相同值_Sql_Group By - Fatal编程技术网

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

在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 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;