2012-04-04 20 views
0

データベースに顧客トランザクションタイプが記載されていない場合
モデル年がトランザクションよりも2年以下の場合は、 タイプを保証として更新する必要があります。SQL Server 2008の更新列 - SSIS

残りの60%の顧客データは、お客様 として更新され、40%の顧客データはWarranty としてランダムに各ディーラーで更新される必要があります。

私は、この構造のモデル年のテーブルのテーブルを持っている:

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

+0

モデル年は、トランザクションタイプよりも小さいか、2年に等しい場合顧客取引タイプがデータベース で言及されていない場合は0ダウンお気に入りの シェア[G +]共有と[FB]共有[TW] \t 投票保証として更新する必要があります。 残りの60%の顧客データを顧客の支払いとして更新し、40%の顧客データを各販売店で無作為に更新する必要があります。ありがとう – Gallop

+0

私はあなたのクエリを編集し、出力テーブルを表示することができますか? – Arion

答えて

1

あなたはSSISをどうする正確に何をしようとしているそれを修正する助けてください?どこからデータを移動していますか?どこにデータを挿入していますか?

このクエリを実行する必要がある場合は、SSISは必要ありません。このロジックはSQLで実行できます。 これを別のテーブルやデータベースに挿入する必要がある場合は、SQLの計算を(ちょうどやったように)行い、OleDBSourtceコンポーネントのソースとして使用し、それを宛先に挿入します。

私はあなたが私たちは、あなたがどのような出力を期待しますあなた

+0

上記の条件を確認し、2年前に車両を購入した場合、トランザクションテーブルの取引タイプ列を保証として更新します。 残りの2年以上の車両はカウントされ、60%が顧客の支払いとして更新され、残りの40%は残りの車として更新されます – Gallop

+0

humm okですが、なぜSSISが必要なのかわかりません。それはあなたがSQLクエリを使用してすべてを行うことができるようだ。何が問題なのですか?あなたのクエリは機能していませんか?あなたのテーブル構造を投稿できない場合は? – Diego

+0

ビジネスルールはSSISパッケージに含まれているので、SSISコンポーネントを使用して問題を解決する方法があるかもしれません。クエリを親切に役立てることができれば...ありがとう – Gallop

関連する問題