我在ms-access 2013中發射了一個Update查詢。但是這個更新查詢將針對不同條件下的不同行執行。我知道在Access中我們不能使用「CASE ... WHEN」條件。我們需要去開關() function.Below是我的更新查詢:參數太少。預計2在Talend
UPDATE T_Generated_OpportunityLine SET IsUploadable = Switch(
Lowestlevelvalue_c='PTLRC -Swiss CCO Standards' AND Amount_c>=5000,"Y",
Lowestlevelvalue_c='PTLRC -Swiss CCO Standards' AND Amount_c<5000,"N",
Lowestlevelvalue_c='PTWDA -Swiss WDE Standards' AND Amount_c>=5000,"Y",
Lowestlevelvalue_c='PTWDA -Swiss WDE Standards' AND Amount_c<5000,"N",
Lowestlevelvalue_c='PTFDS - FD ENCLOSURE SYSTEMS' AND Amount_c>=30000,"Y",
Lowestlevelvalue_c='PTFDS - FD ENCLOSURE SYSTEMS' AND Amount_c<30000,"N",
Lowestlevelvalue_c='PTCMS - CABLE MNGT SYSTEMS' AND Amount_c>=25000,"Y",
Lowestlevelvalue_c='PTCMS - CABLE MNGT SYSTEMS' AND Amount_c<25000,"N",
Lowestlevelvalue_c='DOOR ENTRY SYSTEM' AND Amount_c>=15000,"Y",
Lowestlevelvalue_c='DOOR ENTRY SYSTEM' AND Amount_c<15000,"N");
此查詢正確地從接入2013.But當我使用此查詢在Talend5.4在運行「 tAccessRow「元素然後我得到以下錯誤:
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2
更新之前,我的表列如下:
LowestLevelInPyramid_c Lowestlevelvalue_c LineStatus_c Quantity_c Amount_c LineClosedate_c IsUploadable
ProductLine PTLRC -Swiss CCO Standards Pending 1 9600 11/21/2013
更新後,這將是
LowestLevelInPyramid_c Lowestlevelvalue_c LineStatus_c Quantity_c Amount_c LineClosedate_c IsUploadable
ProductLine PTLRC -Swiss CCO Standards Pending 1 9600 11/21/2013 Y/N
這個「Y/N」將根據評估條件,如上面提到的查詢所解釋的。這裏的每一行代表opportunityLine.Through更新我正在確定一個特定的行是否可上傳到客戶關係管理系統或不。如果它的'Y',那麼它將可以上傳,如果它的「N」,那麼它將不可上傳。
任何人都可以提供任何合適的解決方案?
不要在tAccessRow中執行此操作。改爲將邏輯放入tMap中。 – ydaetskcoR 2014-10-06 10:11:23
還有據我所知TMAP是通常用於映射purpose.and我想通過這個query.so我怎麼能實現這個使用TMAP更新表的特定列? – 2014-10-06 10:13:54
您的更新聲明看起來不太清楚。您能否在更新之前提供您的數據示例,以及之後應該看起來如何? – ydaetskcoR 2014-10-06 11:04:01