gpt4 book ai didi

sql - 如果仅存在一个不同的值,则选择不同的值?

转载 作者:行者123 更新时间:2023-12-04 22:33:55 24 4
gpt4 key购买 nike

使用 SQL Server 2012 。如果只有 一个 不同值存在,我想从表 T 中选择一个不同的值。下面我有一个我正在尝试做的简化示例。

此数据将导致 1 个返回值:'bbb'

ID    Data
----------
1 'bbb'

这些数据也是如此:
ID    Data
----------
1 'bbb'
2 'bbb'
3 'bbb'

但此数据将导致返回 0 行:
ID    Data
----------
1 'aaa'
2 'bbb'
3 'bbb'

理想情况下,有一种方法可以计算 WHERE 子句中的行数(不分组数据)。另外,请记住我的原始查询非常复杂。对于这个简化版本,我尝试了这样的事情,但它不起作用:
SELECT [Data] FROM
(SELECT [Data], COUNT(*) OVER() AS [DinstinctValueCount] FROM
(SELECT DISTINCT [Data] FROM [T]) [A]) [B] WHERE [DistinctValueCount] = 1

无效的列名“DistinctValueCount”。

更新

我找到了解决方案。有没有更好的?
SELECT CASE WHEN COUNT(*) = 1 THEN MIN([Data]) ELSE NULL END AS [Data] FROM
(SELECT DISTINCT [Data] FROM [T]) [A]

任何聚合函数都可以。

最佳答案

SELECT MIN(ID), [Data]
FROM [tablename]
GROUP BY [Data]
HAVING
1=(SELECT COUNT(DISTINCT [Data]) FROM [tablename])

或者如果你不想重复 [tablename],你可以使用这样的东西:
SELECT MIN(ID), MIN([Data])
FROM [tablename]
HAVING MIN([Data])=MAX([Data])

请参阅 fiddle here

关于sql - 如果仅存在一个不同的值,则选择不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19405376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com