SQL-запрос не дает результатов - PullRequest
0 голосов
/ 02 октября 2018

У меня есть оператор Select, который получает элементы на основе наибольшей даты.это работает, но это выбранное значение из элементов управления asp.net, и один из элементов управления - это список с несколькими выборками enter image description here

, как вы видите, DynamicAtrributeID 937766 показывается один раз: enter image description here

Мне нужно, чтобы показать все строки, которые были в 937766, а также другие строки, которые могли быть только одной строкой.Возможно ли это

SELECT     VotingValueDynamicId, 
             DecisionValueID, 
             DynamicAttributeID, 
             VotingValue, 
             DecisionSurveyID, 
             VALUEDATEUPDATED, 
             RECORDSTATUS, 

FROM         Adjudicate.ONCOLOGY_DynamicDecisionValuesForCaseManager AS a
WHERE     (VALUEDATEUPDATED =
                          (SELECT     MAX(VALUEDATEUPDATED) AS Expr1
                            FROM        Adjudicate.ONCOLOGY_DynamicDecisionValuesForCaseManager AS b
                            WHERE      (a.DecisionValueID = DecisionValueID) AND a.DynamicAttributeID = DynamicAttributeID) ) AND (RECORDSTATUS <> 'D')

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Как сказал @ necoflecap1, проблема заключается в условии вашего фильтра. Для VALUEDATEUPDATED вы фильтруете max (VALUEDATEUPDATED), который в любом случае даст 1 значение для комбинации DynamicAttributeID и DecisionValueID, поскольку ваш фильтр в подзапросе равен

    WHERE      (a.DecisionValueID = DecisionValueID) AND (a.DynamicAttributeID = 
    DynamicAttributeID) 

Я вижу здесь две возможности: либо добавить еще один фильтр для столбца VotingValue

    WHERE      (a.DecisionValueID = DecisionValueID) AND (a.DynamicAttributeID = 
    DynamicAttributeID) and (a.VotingValue=b.VotingValue)

, либо выполнить

    group By VotingValue 

внутри подзапроса фильтра для max (VALUEDATEUPDATED), чтобыагрегация будет выполняться для каждого VotingValue (который, как я вижу, представляет собой столбец с другим значением для DynamicAtrributeID 937766)

0 голосов
/ 02 октября 2018

В показанном примере все строки с DynamicAtrributeID = 937766 имеют разные значения в VALUEDATEUPDATED, поэтому запрос показывает одну строку для этого DynamicAtrributeID, потому что это то, что вы делаете, фильтруете и получаете только строку с максимальным значением VALUEDATEUPDATED.,Другими словами, вы не можете получить более одной строки для DynamicAtrributeID, если вы фильтруете по его максимуму (VALUEDATEUPDATED).

...