夥計們你會有任何想法如何解決這個問題?根據變量從多行中選擇一個
我碰到了一堵磚牆。我正在編寫一份報告背後的代碼。報告必須根據FinancialYear
變量顯示Colour
。
這裏是一個表例如:
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
是''
結果應顯示行n已接收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
請用show創建表添加您的表定義。 – e4c5
顯示你已經嘗試過?即使它不工作,它也顯示努力和你的思路 –
謝謝! :)不知道如何在這裏添加SQL格式的代碼,但我已經編輯了我的問題。 – Tom