2012-04-04 105 views
0

如果数据库中未提及客户交易类型
如果模型年少于或等于2年,则交易 类型应更新为担保。SQL Server 2008中的更新列 - SSIS

剩余60%的客户数据应更新为客户 支付,40%的客户数据应随机更新为每个经销商的保修 。

我对这种结构的年款表的表:

SlNo VehicleNo ModelYear 
---- --------- --------- 
1  AAAD1234 2012 
2  VVV023333 2008 
3  CRT456  2011 
4  MTER6666 2010 

是否有可能实现这一目标使用SSIS?

我试过了一个查询。请帮助解决问题

select 
    vehicleNo, Modelyear, 
    case 
     when DATEDIFF(year, ModelYear, GETDATE()) <= 2 then 'Warranty' END, 
    case 
     when COUNT(modelyear) * 100/(select COUNT(*) from VehicleModel) > 2 then '100%' end, 
    case 
     when COUNT(modelyear) * 40/(select COUNT(*) from VehicleModel) > 2 then '40%' end 
from 
    vehiclemodel 
group by 
    vehicleNo, Modelyear 

输出

vehicleNo Modelyear (No column name) (No column name) (No column name) 
--------- --------- ---------------- ---------------- ---------------- 
AAAD1234 2008  NULL    100%    40% 
VVV023333 2010  Warranty   100%    40% 
CRT456  2011  Warranty   100%    40% 
MTER6666 2012  Warranty   100%    40% 
+0

你期望输出什么? – Arion 2012-04-04 07:42:12

+0

0向下投票最喜爱的 份额[G +]共享[FB]共享[TW] \t 如果如果车型年比交易类型小于或等于2年,客户交易类型没有在数据库 提到应作为保修更新。 剩余60%的客户数据应作为客户支付进行更新,40%的客户数据应随机更新为每个经销商的担保。谢谢 – Gallop 2012-04-04 08:25:42

+0

我的意思是你可以编辑你的查询并显示一个输出表? – Arion 2012-04-04 09:19:37

回答

1

究竟什么是你想用SSIS办?你从哪里移动数据?你在哪里插入数据?

如果您只需要运行此查询,则不需要SSIS。您可以在SQL中执行此逻辑。 如果您需要将其插入到另一个表或数据库中,我也会对SQL进行计算(就像您刚才那样)并将其用作OleDBSourtce组件的源,然后将其插入到目标中。

我认为你必须提供更多的信息,以便我们可以帮到你

+0

我想检查上述条件,然后更新交易表中的交易类型列作为保修,如果车辆在2年前购买的话。 剩余的车辆> 2年将被计算出来60%将作为客户支付更新和剩余40%作为其他 – Gallop 2012-04-04 11:18:28

+0

humm好,但我不明白你为什么需要SSIS。看来你可以使用SQL查询来做所有事情。问题到底是什么?您的查询不工作?如果不是,你可以发布你的表结构吗? – Diego 2012-04-04 14:31:56

+0

业务规则是SSIS包的一部分,所以认为,可能有一种方法来解决使用SSIS组件的问题。如果它只能用一个查询请帮助一个...谢谢 – Gallop 2012-04-05 03:51:26