日期:2014-05-18  浏览次数:20504 次

Sql学得不好,求解一条Sql语句
我最近做了一条有关调查统计方面的程序,遇到了麻烦,特此来向高人们求救。
  情况是这样的:
  发出调查表,每张调查表(每张调查表有自己的编号:BiaoNO)中有许多道调查题,每道调查题又有几个选项供被调查者选择。我的调查回复表是这样设计的
  回复ID(repID) 调查题ID(QuestionID) 调查题选项ID(ChoiceID) 调查表编号(biaoNO)
  我现在的问题是这样的,我想知道,选择了某题下某选项以及另外某题某项的人数有多少人?
  比如,在所有的调查表表中, 我想知道选择了第1题第2选项以及选择了第3题第4项的有多少人?


  不知我说明白了吗?紧急求救啊
   
  SQL学得真臭,没办法,只好稍微复杂一点的SQL语句就写不出来了(汗一下呀:(

------解决方案--------------------
SQL code
select qestionID,choiceID,COUNT(qestionID) as personCount from T_Questionnaire group by qestionID,choiceID

------解决方案--------------------
其实这个最好用函数如果数据库支持的话。
如果用单条SQL可以这样:
SELECT COUNT(DISTINCT biaoNO)
FROM [表名] AS t1 JOIN [表名] AS t2 ON t1.biaoNO = t2.biaoNO
WHERE t1.QuestionID = 1 and t1.RepID=2 and t2.QuestionID = 3 and t2.RepId=4

如果支持复合语句的话可以
SELECT COUNT(DISTINCT biaoNO)
FROM [表名]
WHERE biaoNO IN
(
SELECT DISTINCT biaoNO
FROM [表名]
WHERE QuestionID = 1 and RepID = 2
)
and QuestionID=3 and RepID=4
------解决方案--------------------
这个得用函数 存储过程 或者前端动态构造SQL语句啊