让我们考虑下表
col1 col2 col3
a true 1
a true 2
b true 1
b false 2
在上表中,我需要计算不同的col1,其中col2应为true。 但条件是col1的所有值(即' a')都应该为真。 它无法取得' b'因为它有一个错误。
以下是我尝试过的示例查询
select count(distinct(col1)) from table where col2 = 'true' and col2 != 'false'
但它显示结果为2,但我需要的是1。
我正在使用sql server。 提前谢谢。
答案 0 :(得分:2)
这是一招
SELECT Count(*)
FROM (SELECT col1
FROM table
GROUP BY col1
HAVING Min(col2) = 'true'
AND Max(col2) = 'true')a
答案 1 :(得分:1)
试试这个
@Autowired
private TcsManagementEndUserValidator tcsManagementEndUserValidator;
@InitBinder("command")
private void initBinder(WebDataBinder binder) {
binder.setValidator(tcsManagementEndUserValidator);
}
答案 2 :(得分:1)
将所有COL1
仅使用true或仅为false,并从此列表中选择具有true(外部查询)的那些。
SELECT COUNT(DISTINCT A.COL1)
FROM
(SELECT COL1
FROM YOUR_TABLE
GROUP BY COL1
HAVING COUNT(DISTINCT COL2) = 1) A
INNER JOIN
YOUR_TABLE B
ON A.COL1 = B.COL1 AND B.COL2 = 'true';