SQL最大日期不返回预期的结果

By simon at 2018-02-07 • 0人收藏 • 15人看过

我正在尝试返回最新的到期日和那里的行 是匹配到期日期,我会然后返回记录在哪里 价格是最高的。但是,它看起来像我的代码中的分组是不正确的 而我不确定的是什么e问题是。 #查询

SELECT
    dap.CompanyID AS CompanyId,
    MAX(dap.Price) AS Price,
    dap.AssetClass,
    dap.AsOfDate,
    MAX(dap.MaturityDate) AS MaturityDate
FROM TA.DailyAssetPricing dap WITH(NOLOCK)
WHERE dap.AssetClass = 'Bond' AND dap.MaturityDate IS NOT NULL AND dap.AsOfDate = '2018-02-02' AND dap.CompanyID = 59303
GROUP BY dap.CompanyID, dap.AssetClass, dap.AsOfDate, dap.MaturityDate
#结果
CompanyId   Price   AssetClass  AsOfDate    MaturityDate
59303   106.6080860000  Bond    2018-02-02  2021-12-01 00:00:00.000
59303   97.2326750000   Bond    2018-02-02  2033-09-15 00:00:00.000

3 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

您通常选择GROUP BY列,除了那些谁 参数来设置功能。 在这种情况下:

GROUP BY dap.CompanyID, dap.AssetClass, dap.AsOfDate 

2018-02-07   #2

您通常选择GROUP BY列,除了那些谁 参数来设置功能。 在这种情况下:

GROUP BY dap.CompanyID, dap.AssetClass, dap.AsOfDate 

2018-02-07   #3

如果你想要有最大到期日的行,你不需要 group by.你可以这样做:

SELECT TOP (1) WITH TIES dap.*
FROM TA.DailyAssetPricing dap
WHERE dap.AssetClass = 'Bond' AND dap.MaturityDate IS NOT NULL AND
      dap.AsOfDate = '2018-02-02' AND dap.CompanyID = 59303
ORDER BY dap.MaturityDate DESC;

登录后方可回帖

Loading...