从同一列MS SQL的子查询中选择计数

时间:2013-12-19 17:06:29

标签: sql sql-server

好的我需要从同一张桌子上获取计数ID。我不知道如何解释这个,所以我只会告诉你:

SELECT COUNT(ID) 
FROM Response 
WHERE q_ID = 655 
  AND r = 1576 
  AND q_ID = 642 
  AND r = 1496

我认为我需要一个子查询,如:

SELECT COUNT(ID) 
FROM 
(
  SELECT ID 
  FROM Response 
  WHERE q_ID = 655 
   AND r = 1576
) 
WHERE q_ID = 642 
 AND r = 1496

也许这样的事情会起作用我只是不确定。 好的,所以这就是我的想法,我需要一个ID过滤两次的计数首先给我所有= q_ID = 655 AND r = 1576然后从该组计算所有的ID = q_ID = 642 AND r = 1496 < / p>

我希望有所帮助。

6 个答案:

答案 0 :(得分:2)

您在寻找Joes查询还是这个? 如果您要查找q_ID为655或642且r为1576或1496的任何行,则会为您提供。

SELECT COUNT(ID) 
FROM Response 
WHERE q_ID  IN (655,642) 
  AND r IN (1576, 1496)

如果您要查找的报表返回的q_ID为655且r为1576或q_ID为642且r为1496的行,那么您想要这个。

SELECT COUNT(id) 
FROM Response 
WHERE (q_ID = 655 AND r = 1576)
      OR (q_ID = 642 AND r = 1496)

如果你想让第二个人接受@ Joe的答案,那么他首先想出了这个答案。

答案 1 :(得分:0)

这是你的意思吗?

SELECT COUNT(distinct id) 
FROM Response 
WHERE (q_ID = 655 
         AND r = 1576)
      OR (q_ID = 642  
         AND r = 1496)

答案 2 :(得分:0)

假设你没有重复的Id,那只是计算行数,q_ID和r值形成对,这是一个简单的例子

SELECT COUNT(*) FROM Response WHERE (q_ID = 642 AND r = 1496) 
OR q_ID = 655 AND r = 1576)

答案 3 :(得分:0)

通过在分组中包含Q_ID和R您可以识别与该特定组关联的计数。

SELECT COUNT(*), Q_ID, R
FROM TABLE
WHERE ((q_ID = 655 AND r = 1576) OR (q_ID = 642 AND r = 1496))
GROUP BY Q_ID, R

答案 4 :(得分:0)

以下是我解决这个问题的方法,有点凌乱但是没问题,我为每个参与调查的人添加了一个ID,制作了一个数据集并将每个人添加到具有特定性状年龄等的数据集中。 所以我有一组人员数据然后我只是在一个计数中相互交叉表,我有我想要的数量。如果其他人有更好的解决方案,我全都耳朵!

答案 5 :(得分:-3)

使用以下方法修改您的查询:

根据您的要求提供两种选择:

如果你的要求是“找到任何q_ID为655或642且r也是1576或1496的行”,那么试试这个:

SELECT COUNT(ID) FROM Response WHERE q_ID  IN (655,642) AND R IN (1576, 1496)

如果您的要求是“q_ID为655且r为1576或q_ID为642且r OF 1496的行”,请尝试以下操作:

SELECT COUNT(ID) FROM Response WHERE (q_ID = 655 AND r = 1576) OR (q_ID = 642 AND r = 1496)