Ребята, есть ли у вас какие-либо идеи, как решить эту проблему?SELECT один из нескольких строк на основе переменной
Я ударил кирпичную стену. Я пишу код за отчет. Отчет должен показывать Colour
на основе переменной FinancialYear
.
Вот пример таблицы:
CompanyID | StartDate | EndDate | ReviewDate | FinancialYear | Colour
46 | 2012-01-18 | 2013-12-17 | 2013-12-15 | 2012 | Red
46 | 2013-12-17 | 1900-01-01 | 2017-03-10 | 2014 | Red
46 | 2011-05-11 | 2012-01-17 | 2011-06-30 | 2014 | Orange
Когда переменная FinancialYear
будет 2016
, CompanyID
должен показать, как Colour Red
EndDate
является ''
результат должен показать строку nnumber 2
.
Однако, если FinancialYear
переменная будет 2012
у меня есть две строки, которые будут соответствовать критериям, и нужно будет выбрать тот, который больше EndDate
или StartDate
, Reviewdate
. В результате должен отображаться номер строки 1.
У кого-нибудь есть идея, как это сделать? Спасибо за любую обратную связь!
То, что я пытался до сих пор:
SELECT
CompanyID
, StartDate AS [Traffic Lights Start Date]
, EndDate AS [Traffic Lights End Date]
, ReviewDate AS [Traffic Lights Review Date]
, Category AS [Traffic Lights Colour]
, CASE
WHEN (YEAR(EndDate) <> 1900
AND @FinancialYear BETWEEN (YEAR(DATEADD(DD,0, DATEDIFF(DD,0, DATEADD(MM, -(((12 + DATEPART(M, CAST(StartDate AS DATETIME))) - 7)%12), CAST(StartDate AS DATETIME))))) +1)
AND (YEAR(DATEADD(DD,0, DATEDIFF(DD,0, DATEADD(MM, -(((12 + DATEPART(M, CAST(EndDate AS DATETIME))) - 7)%12), CAST(EndDate AS DATETIME))))) +1)
AND (YEAR(DATEADD(DD,0, DATEDIFF(DD,0, DATEADD(MM, -(((12 + DATEPART(M, CAST(ReviewDate AS DATETIME))) - 7)%12), CAST(ReviewDate AS DATETIME)))))+1) >= @FinancialYear)
THEN '1'
WHEN
(YEAR(EndDate) = 1900
AND YEAR(ReviewDate) > = @FinancialYear)
THEN '1'
ELSE '0'
END AS FinancialYear_TrafficLights
, (YEAR(DATEADD(MONTH,-((DATEPART(MONTH,CAST(StartDate AS DATETIME)) +7) %12),CAST(StartDate AS DATETIME)))+1) AS Actual_Financial_Year
, ROW_NUMBER() OVER(PARTITION BY Company ORDER BY StartDate ASC) AS LatestRow
FROM
CompanyTrafficLightHistory
пожалуйста, добавить определение таблицы с помощью шоу создать таблицу. – e4c5
Показать, что вы пробовали? Даже если он не работает, он показывает усилие и ваш ход мысли –
Спасибо! :) Не знаю, как добавить код с форматированием SQL здесь, но я отредактировал свои вопросы с ним. – Tom