我在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