的SAP SQL轉換器給了我這個作爲輸出:相當於沒有頂部或ORDER子查詢通過HANA SQL
SELECT c."id", c."key_link",
(SELECT TOP 1 "notes_extra"
FROM "Orders" c2
WHERE c2."id" = c."id" AND c2."start" < c."start"
ORDER BY c2."start" DESC) AS "previous_notes"
FROM "Orders" c
ORDER BY c."id";
不幸的是,SAP HANA SPS 10不接受它:
SAP DBTech JDBC: 309]:相關的子查詢不能有TOP或ORDER BY
我很努力地將查詢轉換成沒有TOP和ORDER BY的東西。嘗試了一些事情WHERE "start" = (SELECT MAX("start")
但由於「開始」可以有重複的值,我結束了:SAP DBTech JDBC:[305]:單行查詢返回不止一行
那麼什麼是在正確的對等HANA SQL?
編輯:
它似乎增加了問題,「notes_extra」列的類型是NCLOB。我試圖想出的任何替代方法都會在此列上的集合函數(MAX,FIRST_VALUE,...)中的某處結束,結果如下:SAP DBTech JDBC:[264]:無效數據類型:LOB輸入聚合函數
'WHERE c2。「start」=(SELECT MAX(c3。「start」)FROM「Orders」c3)'這可能會返回多行,因爲有多行具有相同的max「start」值,添加其他條件。這會導致錯誤消息,因爲對於選擇列表,只能返回一個結果行。我在我原來的問題中添加了錯誤信息。 – Hannobo
很明顯,你需要一個tiebreaker來解決這個問題。如果有多個記錄被返回,哪一個必須被記錄? 如果您的初始代碼已經工作,那將是未定義的。 –
拉爾斯:沒錯。那麼,如果我真的不在乎,我怎麼能挑選哪一個?見上面的編輯。 – Hannobo