0
我有一個非常具體的問題,我在這裏有一年的領域。我需要能夠把它們拉出來,並有一個查詢條件來查看每一行,並選擇年份最大但小於選擇列表中選擇的年份,因爲我使用的連接有很多需要過濾的行。示例我在第1列中有1,2,3,4等行ID。但是我會有一些額外的1說5行1。我想過濾出所有額外的1,在另一列中沒有最大年份。因此,需要使用ID列來查看哪些行可以比較,然後只保留年份列中年份最大的行。會有一些需要比較的分組。說出所有的2和3。仍然保持最大的一年,並篩選出那些最小的那些。Meridium SQL查詢設計
下面是一種基準線查詢,它還篩選我們不再處於服務狀態的行。
SELECT CDFT_Test_Results_Primary_M."Equipment ID" "Equipment ID",
CDFT_Test_Results_Primary_M."Pass/Fail" "Pass/Fail",
CDFT_Test_Results_Primary_M."Failure Type" "Failure Type",
CDFT_Test_Results_Primary_M."Desired Interval (MO)" "Desired Interval (MO)",
CDFT_Test_Results_Primary_M."Task Description" "Task Description",
CDFT_Test_Results_Primary_M."Year" "Year",
CDFT_Test_Results_Primary_M."Site" "Site",
CDFT_Test_Results_Primary_M."Device Type" "Device Type",
CDFT_Test_Results_Primary_M."Execution Date" "Execution Date",
CDFT_Test_Results_Primary_M."Eqpt Manufacturer" "Eqpt Manufacturer",
CDFT_Test_Results_Primary_M."Eqpt Manufacturer Model Num" "Eqpt Manufacturer Model Num",
CDFT_Test_Results_Primary_M."Eqpt Manufacturer Serial Nu" "Eqpt Manufacturer Serial Nu",
CDFT_Test_Results_Primary_M."Decommission Year" "Decommission Year",
CDFT_Test_Results_Primary_M."Commission Year" "Commission Year",
CDFT_Test_Results_Primary_M."Equipment Key" "Equipment Key",
CDFT_Test_Results_Primary_M."Test Key" "Test Key"
FROM (! 'Personal[cmgray1]\Queries\CDFT Updated\CDFT Test Results Primary Multi Year Pre Non-Test') CDFT_Test_Results_Primary_M
WHERE (((CDFT_Test_Results_Primary_M."Year" <= CDFT_Test_Results_Primary_M."Decommission Year"
AND CDFT_Test_Results_Primary_M."Year" >= CDFT_Test_Results_Primary_M."Commission Year")
AND CDFT_Test_Results_Primary_M."Decommission Year" >= (? :s :caption='Year Selection' :id=DecomYear :l='2009','2010','2011','2012','2013','2014','2015','2016','2017','2018','2019','2020' :excl)
AND CDFT_Test_Results_Primary_M."Commission Year" <= (? :s :caption='Year Selection' :id=DecomYear :l='2009','2010','2011','2012','2013','2014','2015','2016','2017','2018','2019','2020' :excl))
OR (CDFT_Test_Results_Primary_M."Decommission Year" IS NULL AND CDFT_Test_Results_Primary_M."Commission Year" IS NULL)
OR (CDFT_Test_Results_Primary_M."Year" >= CDFT_Test_Results_Primary_M."Commission Year"
AND CDFT_Test_Results_Primary_M."Decommission Year" IS NULL
AND CDFT_Test_Results_Primary_M."Commission Year" <= (? :s :caption='Year Selection' :id=DecomYear :l='2009','2010','2011','2012','2013','2014','2015','2016','2017','2018','2019','2020' :excl))
OR (CDFT_Test_Results_Primary_M."Year" <= CDFT_Test_Results_Primary_M."Decommission Year"
AND CDFT_Test_Results_Primary_M."Decommission Year" >= (? :s :caption='Year Selection' :id=DecomYear :l='2009','2010','2011','2012','2013','2014','2015','2016','2017','2018','2019','2020' :excl)
AND CDFT_Test_Results_Primary_M."Commission Year" IS NULL))
正如您在下面看到的,如果按設備ID進行分組,您將在任務描述下獲得多年。我希望能夠挑選最大的組合並過濾掉其餘的組合。例如,2009年應該被濾除,並且2013年的點仍然適用於類似設備ID的設備。
即使是我應該看的方向的想法也沒有問題。我一直在這裏擱淺了一段時間。 – ColdTeck
你可以用這種格式閱讀你自己的查詢嗎?我不能。請以可讀方式格式化,並將其降至核心問題。 –
其中rdbms全部3個?如果全部3個,你通常可以取出oracle和sql-server,因爲mysql將成爲函數特定方法中更受限制的方法之一。接下來我同意juergen格式化查詢,以便它可讀。我開始努力,但是不想讓你做。接下來,您要求那些很可能知道系統功能的人提供建議,因此我們並不需要這些圖像來告訴我們它們是什麼。最後應包括示例數據和期望的結果。但是,聽起來像你需要重新考慮說明,以最大年份小於輸入變量cte與row_number – Matt