首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤列值相同但最大日期不同的行

过滤列值相同但最大日期不同的行
EN

Stack Overflow用户
提问于 2017-06-10 00:37:22
回答 0查看 27关注 0票数 2

我有一个返回结果的查询。

代码语言:javascript
复制
    declare @value varchar(500) = 1

    SELECT cnb.ndc_id
        ,cnb.contract_num_val
        ,cnb.quote_price
        ,CONVERT(VARCHAR(10), cnb.eff_dt, 101) AS 'eff_dt'
        ,cnb.discount_pct
        ,cnb.rebate_pct
        ,cnb.award_type
        ,cnb.contract_ndc_brg_id
        ,(
            SELECT SUBSTRING((
                        SELECT ',' + gm.item_name AS [text()]
                        FROM GM_PROGRAM gm
                        JOIN [CONTRACT_ATTR] ca ON ca.[ATTR_VAL] = gm.Item_Id
                        WHERE field_id = 239
                            AND ca.item_id = (
                                SELECT item_id
                                FROM [CONTRACT_ATTR]
                                WHERE attr_val = cnb.contract_num_val
                                    AND field_id = 413
                                )
                        FOR XML PATH('')
                        ), 2, 1000)
            ) AS 'programs'
    FROM [ndc_attr] ndc
    INNER JOIN contract_ndc_brg cnb ON ndc.attr_val = cnb.ndc_id
    WHERE ndc.field_id = 69

我正在尝试添加一个过滤器,对于每个唯一的contract_num_val,它将只返回具有最高日期的一个。

首先,我尝试在CONVERT(VARCHAR(10), cnb.eff_dt, 101)周围添加MAX(),然后添加一个group by子句。但它不会运行,除非我将所有内容都添加到group by,然后它只返回相同的结果。

然后看着这里,我试着做一个更简单的选择,我可以用它来取回我需要过滤的键。基于此:SQL Select only rows with Max Value on a Column

这又一次不能运行:

代码语言:javascript
复制
select contract_ndc_brg_id, max(eff_dt) from contract_ndc_brg group by contract_num_val

我必须将contract_ndc_brg_id添加到组中,然后它才会返回所有内容。

我做错了什么?我该如何改正?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44462828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档