[英]SQL Query getting not results
我有一个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')
在所示的示例中,所有DynamicAtrributeID = 937766的行在VALUEDATEUPDATED上具有不同的值,因此查询正在显示该DynamicAtrributeID的一行,因为这就是您正在做的事情,仅过滤并获取最大两行的值VALUEDATEUPDATED。 换句话说,如果按DynamicAtrributeute的max(VALUEDATEUPDATED)进行过滤,则不能获得超过一行。
就像@ necoflecap1所说的那样,问题在于您的过滤条件,对于VALUEDATEUPDATED,您正在过滤max(VALUEDATEUPDATED),无论哪种方式,它都会为DynamicAttributeID和DecisionValueID组合提供1个值,因为子查询中的过滤器为
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具有不同的值)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.