public List <YieldRateIncreaseMaxDaysReportModel> GetYieldRateIncreaseMaxDays([FromQuery] YieldRateIncreaseMaxDaysQueryModel queryModel) { if (!ModelState.IsValid) { throw new MyTwseException(MyTwseExceptionEnum.InvalidRequestParameterByModelState, ModelState); } return(_StockInfoService.GetYieldRateIncreaseMaxDays(queryModel)); }
public List <YieldRateIncreaseMaxDaysReportModel> GetYieldRateIncreaseMaxDays(YieldRateIncreaseMaxDaysQueryModel queryModel) { string sql = @" WITH SI AS ( SELECT*,ROW_NUMBER() OVER (ORDER BY [DATE]) AS DateRowNum FROM StockInfo WHERE CODE = @Code ), T3 AS ( SELECT MIN([Date])MinDate ,MAX([Date])MaxDate ,COUNT(1) Days FROM ( SELECT [DATE] ,DateRowNum - ROW_NUMBER() OVER (ORDER BY DateRowNum) AS RowNum FROM ( SELECT S1.[Date] ,CASE WHEN (S2.YieldRate-S1.YieldRate) > 0 OR S2.YieldRate IS NULL THEN 1 ELSE 0 END IsIncrease ,S1.DateRowNum FROM SI S1 LEFT JOIN SI S2 ON S1.DateRowNum = S2.DateRowNum - 1 WHERE S1.CODE = @Code AND S1.[Date] >= @StartDate AND S1.[Date] <= @EndDate ) AS T1 WHERE T1.IsIncrease = 1 )AS T2 GROUP BY RowNum ) SELECT * FROM T3 WHERE Days = (SELECT MAX(Days)FROM T3) "; return(ExecSQL <YieldRateIncreaseMaxDaysReportModel>(sql, queryModel)); }
/// <summary> /// 取得股票殖利率提升連續最大天數 /// </summary> /// <param name="queryModel"></param> /// <returns></returns> public List <YieldRateIncreaseMaxDaysReportModel> GetYieldRateIncreaseMaxDays(YieldRateIncreaseMaxDaysQueryModel queryModel) { if (queryModel.StartDate > queryModel.EndDate) { throw new MyTwseException(MyTwseExceptionEnum.BadRequest, "開始時間不得大於結束時間"); } CreateStockInfoData(queryModel.StartDate.Value, queryModel.EndDate.Value); return(_StockInfoRepository.GetYieldRateIncreaseMaxDays(queryModel)); }