簡體   English   中英

如何使用Min()和Where()SQL函數獲取最早的記錄?

[英]How do I get earliest records using Min() and Where() SQL functions?

我正在嘗試最早提起記錄,但是我一直遇到錯誤。 我以為可以在WHERE子句中執行此操作,但是我錯了。 如何在符合我代碼中當前兩個條件的位置提取數據?

left outer join 
(SELECT
[RID]
,[p_rid]
,[Budget Records.Budget ID]
,[Budget Records.Budget approval process]
,[Budget Records.Inflation base date]
,[Budget Records.Budget Stage]

,CAST(ISNULL([Budget Records.Total capital budget],0) as float) as [CAR Total capital budget]

FROM [FSG_DATA_TEAM].[dbo].[BR]
WHERE [Budget Records.Budget Stage] in ('Cost Plan 1') and min([Budget Records.Inflation base date])) as y

我得到的輸出是“在預期有條件的上下文中,在')'附近指定的非布爾類型的表達式”,但我希望返回的值取決於最早的通脹基准日期。

如果數據庫支持使用窗口分析功能(似乎是SQL-Server ),則可以將查詢的上述部分轉換為:

left outer join 
(
    SELECT *
    (
     SELECT
          [RID]
          ,[p_rid]
          ,[Budget Records.Budget ID]
          ,[Budget Records.Budget approval process]
          ,[Budget Records.Inflation base date]
          ,row_number() over (order by [Budget Records.Inflation base date]) as rn
          ,[Budget Records.Budget Stage]
          ,CAST(ISNULL([Budget Records.Total capital budget],0) as float) as [CAR Total capital budget]
      FROM [FSG_DATA_TEAM].[dbo].[BR]
     WHERE [Budget Records.Budget Stage] in ('Cost Plan 1') 
    ) 
    WHERE rn = 1
) as y   

由於[Budget Records.Inflation base date]列的最小值,限制了結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM