2016-07-27 3 views
0

enter image description hereを取り込みます。 [![ここに画像の説明を入力します] [2] [2]
私はそれが「違い」を持っている1人の以上の列名を計算します。差異は、GUID値が同じであれば計算し、両方の行に差異を移入する必要があります。私のテーブルは enter image description here私は以下の構造を持つテーブルを持つ2つの列の間の差を取得し、差分値

以下のようになります違い列が私のテーブルには違い列を算出した後

以下
GUID         Date  Quantity 
0001639C-8047-45FD-8FB0-D24B906D25D0 7/21/2016 30 
0001639C-8047-45FD-8FB0-D24B906D25D0 7/15/2016 20 
00088951-A2F6-4405-9195-4E830912D56D 7/22/2016 40 
00088951-A2F6-4405-9195-4E830912D56D 7/12/2016 20 
00060D8A-F711-42BD-824F-6F9F92A02E6E 7/23/2016 2 
00074492-6068-48A6-8F99-F70D7328B166 7/19/2016 15 
0007E203-4BD9-4937-BFCB-6A3EBCA33448 7/15/2016 2 

のように見えます

それは

以下のようになります。より詳細な情報を与えた後

GUID    Date         Quantity Difference 
0001639C-8047-45FD-8FB0-D24B906D25D0 7/21/2016  30    10 
0001639C-8047-45FD-8FB0-D24B906D25D0 7/15/2016  20    10 
00088951-A2F6-4405-9195-4E830912D56D 7/22/2016  40    20 
00088951-A2F6-4405-9195-4E830912D56D 7/12/2016  20    20 
00060D8A-F711-42BD-824F-6F9F92A02E6E 7/23/2016   2     0 
00074492-6068-48A6-8F99-F70D7328B166 7/19/2016  15     0 
0007E203-4BD9-4937-BFCB-6A3EBCA33448 7/15/2016  2      0 

差列がGUID値が同じである場合、量の差が行われるべきであり、それは、GUID値.IF差列に移入されるべきで計算されるべきであるが同一でない、それはゼロで埋めなければなりません。

+0

出力の差列を追加してください、GUIDは平等のためにのみ、次の行をチェックする必要がありますか? – TheGameiswar

+0

are not両方の画像は同じですか?テキストデータを使用します。私たちは写真からコピー/ペーストすることはできません。 –

+0

差分の列イメージも追加され、詳細が提供されました。 –

答えて

0
DECLARE @Table Table (GUID varchar(50), Date Date, Quantity Decimal(9,2)) 
Insert Into @Table (GUID,Date,Quantity) Values 
('0001639C-8047-45FD-8FB0-D24B906D25D0','2016-07-21',30), 
('0001639C-8047-45FD-8FB0-D24B906D25D0','2016-07-15',20), 
('00088951-A2F6-4405-9195-4E830912D56D','2016-07-22',40), 
('00088951-A2F6-4405-9195-4E830912D56D','2016-07-12',20), 
('00060D8A-F711-42BD-824F-6F9F92A02E6E','2016-07-23',2), 
('00074492-6068-48A6-8F99-F70D7328B166','2016-07-19',15), 
('0007E203-4BD9-4937-BFCB-6A3EBCA33448','2016-07-15',2) 

;with cteBase as (
    Select * 
     ,Difference=Quantity - Lag(Quantity) over (Partition By GUID Order By Date) 
     ,PctChange =(100*(Lag(Quantity) over (Partition By GUID Order By Date)))/Quantity 
    From @Table 
) 
Select GUID,Date,Quantity 
     ,Difference = sum(isnull(Difference,0)) over (Partition By GUID Order By Date Desc) 
     ,PctChange = sum(isnull(PctChange ,0)) over (Partition By GUID Order By Date Desc) 
From cteBase 
Order by GUID,Date Desc 

戻り

GUID         Date  Quantity Difference PctChange 
0001639C-8047-45FD-8FB0-D24B906D25D0 2016-07-21 30.00  10.00   66.666666666666 
0001639C-8047-45FD-8FB0-D24B906D25D0 2016-07-15 20.00  10.00   66.666666666666 
00060D8A-F711-42BD-824F-6F9F92A02E6E 2016-07-23 2.00  0.00   0.000000000000 
00074492-6068-48A6-8F99-F70D7328B166 2016-07-19 15.00  0.00   0.000000000000 
0007E203-4BD9-4937-BFCB-6A3EBCA33448 2016-07-15 2.00  0.00   0.000000000000 
00088951-A2F6-4405-9195-4E830912D56D 2016-07-22 40.00  20.00   50.000000000000 
00088951-A2F6-4405-9195-4E830912D56D 2016-07-12 20.00  20.00   50.000000000000 
0
DECLARE @Table Table (GUID varchar(50), Date Date, Quantity Decimal(9,2)) 
Insert Into @Table (GUID,Date,Quantity) Values 
('0001639C-8047-45FD-8FB0-D24B906D25D0','2016-07-21',30), 
('0001639C-8047-45FD-8FB0-D24B906D25D0','2016-07-15',20), 
('00088951-A2F6-4405-9195-4E830912D56D','2016-07-22',40), 
('00088951-A2F6-4405-9195-4E830912D56D','2016-07-12',20), 
('00060D8A-F711-42BD-824F-6F9F92A02E6E','2016-07-23',2), 
('00074492-6068-48A6-8F99-F70D7328B166','2016-07-19',15), 
('0007E203-4BD9-4937-BFCB-6A3EBCA33448','2016-07-15',2) 

;with cteBase as (
    Select * 
     ,Difference=Quantity - Lag(Quantity) over (Partition By GUID Order By Date) 
    From @Table 
) 
Select GUID,Date,Quantity 
     ,Difference = sum(isnull(Difference,0)) over (Partition By GUID Order By Date Desc) 
From cteBase 
Order by GUID,Date Desc 

戻り

GUID         Date  Quantity Difference 
0001639C-8047-45FD-8FB0-D24B906D25D0 2016-07-21 30.00  10.00 
0001639C-8047-45FD-8FB0-D24B906D25D0 2016-07-15 20.00  10.00 
00060D8A-F711-42BD-824F-6F9F92A02E6E 2016-07-23 2.00  0.00 
00074492-6068-48A6-8F99-F70D7328B166 2016-07-19 15.00  0.00 
0007E203-4BD9-4937-BFCB-6A3EBCA33448 2016-07-15 2.00  0.00 
00088951-A2F6-4405-9195-4E830912D56D 2016-07-22 40.00  20.00 
00088951-A2F6-4405-9195-4E830912D56D 2016-07-12 20.00  20.00 
+0

おかげでジョン、あなたが傾いている場合は....投票を助けるために私のため –

+0

@saikiranVorugantiハッピーに取り組んでいます。 –

+0

つの列を追加したい、 –

関連する問題