2017-07-14 3 views
0

Output I持って、私が持っているどのような出力 - 次の表:私が望む何分割行

Account No  Description Seg1 Seg2 Seg3  Budget  PeriodBalance 
000-1120-00 Cash   000 1120  00  $1,000.00 $2,000.00 
000-1130-00 Asset   000 1130  00  $1,500.00 $3,000.00 

を持っている:ここで

Account No Description Seg1 Seg2 Seg3 Budget  PeriodBalance 
000-1120-01 Cash   000 1120 01  $500.00  $1,000.00 
000-1120-02 Cash   000 1120 02  $500.00  $1,000.00 
000-1130-00 Asset   000 1130 00 $1,500.00  $3,000.00 

、SEG2が等しい場合1120にすると、私は上記のようにセグメント3の00の代わりに01と02のアカウントNoの後ろに2つのアカウントに分割したいと思います。

declare @period int; 
declare @year int 

Select @period = 12, @year = 2017 

Select 
    rtrim(c.Actnumbr_1) +'-'+ rtrim(c.Actnumbr_2)+ '-'+ rtrim(c.Actnumbr_3) as ACTNUMST, 

    c.ACTDESCR, 
    c.ACTNUMBR_1, 
    c.ACTNUMBR_2, 
    c.ACTNUMBR_3, 
    sum(a.PERDBLNC) as Period_Balance, 
    b.BUDGETAMT 
from GL00100 c 
left outer join GL11110 a on c.ACTINDX = a.ACTINDX 
Left outer join 
    (Select 
     actindx, 
     sum(budgetamt) as budgetamt 
    from GL00201 
      where BUDGETID = 'budget2017' 
      and periodid <= @period group by actindx) b 
    on c.ACTINDX = b.ACTINDX 
where 
    a.PERIODID <= @period and 
    a.year1 = @year 
    --and c.ACTINDX in ('18','211') 
group by 
    c.ACTDESCR, c.ACTNUMBR_1, c.ACTNUMBR_2, c.ACTNUMBR_3, a.year1,c.ACTINDX,b.BUDGETAMT 
+0

誰もこの簡単な質問に答えることができないのでしょうかestion。 – Sat

答えて

0

私は2番目のクエリがすべてに約あるものの、このサンプルデータを使用しているかわからない:返す...

SELECT 
    [Account No] = SUBSTRING([Account No], 1, CHARINDEX('-', [Account No], CHARINDEX('-', [Account No])+1))+ordinal, 
    [Description], 
    Seg1, Seg2, 
    Seg3   = ordinal, 
    Budget  = Budget/2, 
    PeriodBalance = PeriodBalance/2 
FROM @yourTable 
CROSS JOIN (VALUES ('01'), ('02')) split(ordinal) 
WHERE Seg2 = 1120 
UNION ALL 
SELECT [Account No], [Description], Seg1, Seg2, Seg3, Budget, PeriodBalance 
FROM @yourTable 
WHERE Seg2 <> 1120; 

IF OBJECT_ID('tempdb..#yourtable') IS NOT NULL DROP TABLE #yourTable; 
CREATE TABLE #yourtable 
(
    [Account No] varchar(20), 
    [Description] varchar(20), 
    Seg1   char(3), 
    Seg2   smallint, 
    Seg3   varchar(5), 
    Budget  money, 
    PeriodBalance money 
); 

INSERT #yourTable 
VALUES ('000-1120-00', 'Cash', '000', 1120, '00', $1000.00, $2000.00), 
     ('000-1130-00', 'Asset','000', 1130, '00', $1500.00, $3000.00); 

あなたがこれを行うことができます:

Account No    Description   Seg1 Seg2 Seg3 Budget    PeriodBalance 
---------------------- -------------------- ---- ------ ----- --------------------- --------------------- 
000-1120-01   Cash     000 1120 01 500.00    1000.00 
000-1120-02   Cash     000 1120 02 500.00    1000.00 
000-1130-00   Asset    000 1130 00 1500.00    3000.00