我有一个Select语句,该语句根据最大日期获取项目。它可以工作,但是这些是从asp.net控件中选择的值,并且控件之一是多选列表框
您可以看到一次显示了DynamicAtrributeID 937766:
我需要它显示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')
答案 0 :(得分:1)
在所示的示例中,所有DynamicAtrributeID = 937766的行在VALUEDATEUPDATED上的值都不同,因此查询正在显示该DynamicAtrributeID的一行,因为这就是您正在执行的操作,仅过滤并获取最大VALUEDATEUPDATED的行。 换句话说,如果按DynamicAtrributeute的max(VALUEDATEUPDATED)进行过滤,则不能获得超过一行。
答案 1 :(得分:0)
正如@ necoflecap1所说,问题在于您的过滤条件,对于VALUEDATEUPDATED,您正在过滤max(VALUEDATEUPDATED),因为子查询中的过滤器是
system('ssh', '-n', '-o', 'StrictHostKeyChecking no', nginx_stage_servers[0], command)
在这里我可以看到两种可能性,或者为VotingValue列添加一个过滤器
WHERE (a.DecisionValueID = DecisionValueID) AND (a.DynamicAttributeID =
DynamicAttributeID)
或执行
WHERE (a.DecisionValueID = DecisionValueID) AND (a.DynamicAttributeID =
DynamicAttributeID) and (a.VotingValue=b.VotingValue)
在内部过滤器子查询中查询max(VALUEDATEUPDATED),以便对每个VotingValue进行聚合(这是我可以看到的列,其中DynamicAtrributeID 937766具有不同的值)