2013-05-01 2 views
0

Я использую следующий запрос для получения списка записей:различных записей с внутренним соединением в оракуле присоединяется

Select DISTINCT A.Id Questionid, 
    A.Created_Date Questiondate, 
    Row_Number() Over (Order By A.Created_Date Desc) Row_Id, 
B.Id Answerid, 
COUNT(*) OVER (partition by a.id) QCOUNT, 
B.Created_Date Answerdate 
From Question_Table A 
Inner Join Answers_Table B 
ON A.Id  = B.Question_Id 
AND A.Is_Active = 1 
AND A.Is_Delete = 0 
And B.Is_Active = 1 
And B.Is_Delete = 0 
And A.Category_Id = 1318221772 

Answers_Table.question_id сопоставлен question_table.id

Следовательно, для конкретного вопроса ид , на answer_table может быть больше одной строки.

Выход в настоящее время отображения является:

QuestionID QUESTIONDATE ROW_ID ANSWERID QCOUNT ANSWERDATE

52776 08-DEC-12 1 31383 2 09-DEC-12 
52776 08-DEC-12 2 31482 2 10-DEC-12 
52719 07-DEC-12 3 31321 1 07-DEC-12 

Но мое требование для вывода на экран как:

QuestionID QUESTIONDATE ROW_ID ANSWERID QCOUNT ANSWERDATE

52776 08-DEC-12 1 31383 2 09-DEC-12 
52719 07-DEC-12 3 31321 1 07-DEC-12 

Как я могу выложить уникальный вопрос (например, 52776,52719) на выход?

+0

Вы все еще хотите три строки, но для данных вопроса не появляться в непервых строках? –

+0

Я хочу показывать только строки с уникальным идентификатором вопроса. – Ankit

+0

Покажите нам вопрос, на что вы хотите получить результат, а также то, что он сейчас. –

ответ

0

В зависимости от того, что вы пытаетесь сделать, вы можете переписать это с помощью оператора Group By. Тем не менее, если вы хотите сохранить существующий запрос, попробуйте изменить эту строку:

Row_Number() Over (Order By A.Created_Date Desc) Row_Id, 

к этому:

Row_Number() Over (partition by a.id Order By B.Created_Date ASC) Row_Id, 

А потом сделать все дело в подзапрос выборе места row_id = 1. Это должно просто верните одну строку за вопрос и только самый ранний ответ на этот вопрос.

Select * From (
Select DISTINCT A.Id Questionid, 
    A.Created_Date Questiondate, 
    Row_Number() Over (partition by a.id Order By B.Created_Date ASC) Row_Id, 
B.Id Answerid, 
COUNT(*) OVER (partition by a.id) QCOUNT, 
B.Created_Date Answerdate 
From Question_Table A 
Inner Join Answers_Table B 
ON A.Id  = B.Question_Id 
AND A.Is_Active = 1 
AND A.Is_Delete = 0 
And B.Is_Active = 1 
And B.Is_Delete = 0 
And A.Category_Id = 1318221772 
) Where ROW_ID = 1 
Смежные вопросы