使用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]
任何聚合函数都可以。