2017-01-16 7 views
0
Select 
    Query_2.[Date Assigned], Query_2.ID, 
    Query_2.Aging, Query_2.[Date/Time Opened] 
From  
    Query_2 
Where 
    (((Query_2.[Date Assigned]) In (Select [Date Assigned] 
            From Query_2 As Tmp 
            Group By [Date Assigned], ID 
            Having Count(*) > 1 
             And ID = Query_2.ID)) 
    And ((Query_2.[Date/Time Opened]) = (Select Max([Date/Time Opened]) 
             From Query_2 As Tmp 
             Group By [Date Assigned], ID 
             Having Count(*) > 1 
              And ID = Query_2.ID)) 
     ) 

Помогло ли мне кто-нибудь? Я не мог понять, что будет ошибкой, поскольку, когда я впервые это сделал, запрос изначально успешно работал.не более одной записи может быть возвращено подзапросом ERROR

Заранее благодарен!

ДОБАВЛЕНО ПРИМЕЧАНИЕ:

В принципе, я попытался удалить дубликат, дубликат должен быть самым последним и все, что я хочу, чтобы получить как уникальным является первой датой. Надеюсь, это ясно. Ниже я расскажу о нижеследующих ответах и ​​посмотрю, работает ли он. еще раз спасибо за вашу помощь!

+0

У вас есть подзапрос, который возвращает несколько записей в месте, которое требует одного скалярного значения. –

+0

SELECT MAX с GROUP BY может быть возвращена более чем в одной строке –

+1

Пожалуйста, добавьте вашу СУБД –

ответ

0

Я думаю, что вы можете делать то, что вы хотите более легко с row_number():

select q2.* 
from (select q2.*, 
      row_number() over (partition by id order by [Date Assigned] desc, [Date/Time Opened] desc) as seqnum 
     from Query_2 q2 
    ) q2 
where seqnum = 1; 

Это получает запись с последним открытым временем на самом последнюю назначенную дату для каждого id. Это похоже на то, что ваш запрос пытается сделать.

 Смежные вопросы

  • Нет связанных вопросов^_^