Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向复杂SQL查询添加计数_Sql_Sql Server 2005 - Fatal编程技术网

向复杂SQL查询添加计数

向复杂SQL查询添加计数,sql,sql-server-2005,Sql,Sql Server 2005,我有以下查询,返回测试问题、这些问题的可能答案以及用户选择每个可能答案的次数: SELECT p.program_id, p.pre_survey_form_id, p.post_survey_form_id, fq.form_id, sq.question_id, sq.question_text, qo.question_option_id, qo.option_t

我有以下查询,返回测试问题、这些问题的可能答案以及用户选择每个可能答案的次数:

SELECT  p.program_id, 
        p.pre_survey_form_id, 
        p.post_survey_form_id, 
        fq.form_id, 
        sq.question_id, 
        sq.question_text, 
        qo.question_option_id, 
        qo.option_text, 
        G.Total

FROM    dbo.program p
        LEFT OUTER JOIN dbo.form_question fq
            ON p.pre_survey_form_id = fq.form_id OR p.post_survey_form_id = fq.form_id
        LEFT OUTER JOIN dbo.survey_question sq
            ON fq.question_id = sq.question_id
        LEFT OUTER JOIN dbo.question_option qo 
            ON sq.question_id = qo.question_id
        LEFT OUTER JOIN (
            SELECT ra.question_id, ra.question_option_id, COUNT(*) AS Total
            FROM dbo.form_response_answers ra
            GROUP BY ra.question_option_id, ra.question_id 
        ) G
            ON G.question_id = sq.question_id AND G.question_option_id = qo.question_option_id

ORDER BY p.program_id, fq.form_id, sq.question_id, qo.question_option_id
我唯一需要做的就是把每个问题的答案加起来,但我真的有点结巴。我将计算响应的数量,并获得用户选择特定响应的百分比

结果集:

----  ----  ----  --  ---------------------------------------------------------------------------  -  ------------  ----
1000  1001  1000  10  How many days a week do you drink at least eight glasses (64 oz.) of water?  1  Never         1
1000  1001  1000  10  How many days a week do you drink at least eight glasses (64 oz.) of water?  2  Once          1
1000  1001  1000  10  How many days a week do you drink at least eight glasses (64 oz.) of water?  3  Two times     NULL
1000  1001  1000  10  How many days a week do you drink at least eight glasses (64 oz.) of water?  4  Three times   2
1000  1001  1000  10  How many days a week do you drink at least eight glasses (64 oz.) of water?  5  Four times    NULL
1000  1001  1000  10  How many days a week do you drink at least eight glasses (64 oz.) of water?  6  Five or more  NULL

如果我正确理解了您的模型,只需添加以下内容,您就可以了解问题的回答次数:

 LEFT OUTER JOIN (
            SELECT ra.question_id, COUNT(*) AS TotalAnswers
            FROM dbo.form_response_answers ra
            GROUP BY ra.question_id 
        ) G2
然后就像你和G一样加入,得到完整的答案。
这很简单。。。所以我很有可能遗漏了什么:)

这看起来应该有用。。。你得到了什么样的结果?是的,结果看起来不错。我只是在计算一个问题被回答的总次数时遇到了麻烦。它已经在计算一个特定回答被选择的次数,我需要计算每个问题被回答的次数。因此,基本上我需要对每个问题的回答数量求和。我在我的原始帖子中添加了一个问题的结果集,以更好地说明我正在尝试做什么。我需要对最后一列中的值求和,但只针对那个特定的问题。当然,最终结果集中会有很多问题。在派生表中
ra.question\u option\u id
的目的是什么?我在这里是在暗中拍摄,但是如果你从select和grouping语句中删除
ra.question\u option\u id
,它应该会告诉你问题被回答的次数,对吗?我希望你不介意我也重新格式化了你的结果集。