仅当具有特定id的所有记录相同时才计算不同实体

时间:2018-01-22 06:56:52

标签: sql sql-server tsql

让我们考虑下表

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。 提前谢谢。

3 个答案:

答案 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';