首页 > 解决方案 > 使用连接将两个不同表的两列相乘时重复行

问题描述

我有这些下表

  1. Question_Segment_Master
  2. Question_Set_Details

当我加入这两个表时,我得到了重复的行.. 请查看小提琴,我在哪里发布了这两个模式及其数据..

http://sqlfiddle.com/#!18/4c84f/10

这是我预期的 OP

在此处输入图像描述

标签: sqlsql-serverjoin

解决方案


您需要获取每个段的 question_marks。此外,您应该使用 branch_id、test_id、subject_code_id 和 segment_id 来加入。

使用 JOIN 然后取 Distinct 值

SELECT DISTINCT qsm.segment_id, segment_name, segment_description
  , must_attend_question AS tot_attented_question, total_question AS tot_questions
  , (qsd.question_marks * must_attend_question) AS tot_marks
  , '' AS marks_obtain
FROM dbo.Question_Segment_Master AS qsm
INNER JOIN dbo.Question_Set_Details AS qsd
ON (qsd.branch_id = qsm.branch_id AND qsd.test_id = qsm.test_id
AND qsd.segment_id = qsm.segment_id AND qsd.subject_code_id = qsm.subject_code_id)
WHERE qsm.subject_code_id = 1 and qsm.test_id = 1 and qsm.branch_id = 15;

演示


推荐阅读