2017-07-18 22 views
0

我写了一个选择查询在SQL Server中选择命令由值比较行的

select COUNT(csq.PK) as 'QuestionCount' , csq.VersionID  
     from tversion as aiv 
     inner join tquestion as csq csq.VersionID=aiv.VersionID  
     group by csq.VersionID 

返回以下表格。

enter image description here

我要检查,如果QuestionCount不匹配的任何行。

我如何在选择查询中进行检查?

+0

这里有什么预期的结果? –

+0

这里QuestionCount是不同的,所以我需要一个指示可能是真或假。 –

+1

不同于什么?请在问题中发布您的预期结果。 –

回答

1
with cte as 
    (
    select COUNT(csq.PK) as QuestionCount , csq.VersionID  
    from tversion as aiv 
    inner join tquestion as csq csq.VersionID=aiv.VersionID  
    group by csq.VersionID 
    ) 
    select case count(distinct QuestionCount) 
       when 1 then 'No Mismatch' 
       else 'Mismatched' 
      end as result 
    from cte;  
0

方式一:

SELECT DISTINCT COUNT(csq.PK) AS 'QuestionCount' 
FROM tversion AS aiv 
INNER JOIN tquestion AS csq ON csq.VersionID = aiv.VersionID 
GROUP BY csq.VersionID 

SELECT CASE @@ROWCOUNT WHEN 1 THEN 'true' ELSE 'false' END 

另一种方式:

SELECT CASE COUNT(*) WHEN 1 THEN 'TRUE' ELSE 'FALSE' END 
FROM (
    SELECT DISTINCT COUNT(csq.PK) AS 'QuestionCount' 
    FROM tversion AS aiv 
    INNER JOIN tquestion AS csq ON csq.VersionID = aiv.VersionID 
    GROUP BY csq.VersionID 
) AS T 
+0

不工作,我想检查每行的QuestionCount的值,不计数。 –

+1

@KuntalBose,它不只是'COUNT',它会'DISTINCT COUNT'和'WHEN 1'进行比较。如果您确实尝试过,请将其产出与预期产出相比较。另外,有一点['CREATE TABLE; INSERT INTO;'](https://stackoverflow.com/help/mcve)脚本可能会有所帮助。 – KtX2SkD