繁体   English   中英

SQL查询没有得到结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM