sql为每个分支生成1行

时间:2015-05-06 20:23:14

标签: sql reportbuilder3.0

我正在开发以下SQL来创建固定资产重新合并报告。理想情况下,我尝试使用以下字段为每个分支最终添加1行:

(1) Branch
(2) Department
(3) Fixed Asset Account
(4) Fixed Asset Amount 
(5) PS Fixed Asset Amount
(6) Difference between Cols 4 and 5
(7) Accum Depreciation Account
(8) Accum Depreciation Amount
(9) PS Accum Depreciation Amount
(10) Difference between cols 8 and 9

SQL返回我需要的数据,但许多分支有2行,如下所示:

0101  10001010   1501  (blank)   (blank)  (blank)   1601  100.00   101.00   1.00
0101  10001010   1501   250.00   255.00    5.00     1601  blank  blank     blank

我希望看到的是:

0101   1001010   1501   250.00   255.00   5.00   1601   100.00    101.00   1.00

这是我目前的sql:

SELECT 
ir.ERAC_BRANCH_LGCY_CD AS Branch,
pdr.Department,

pdr.ACCOUNT_FA AS FA_ACCT,
SUM(pdr.COST) AS FA_AMT,
CASE WHEN pdr.account_fa = pgal.acct_nbr THEN pgal.pstd_ttl_amt END AS PS_FA_AMT,
fa_amt - ps_fa_amt AS FA_DIFF,

pdr.account_ad AS AD_ACCT,
SUM(pdr.depr_ltd) AS AD_AMT,
CASE WHEN pdr.account_ad = pgal.acct_nbr THEN pgal.pstd_ttl_amt  END AS PS_AD_AMT,
ad_amt - ps_ad_amt AS AD_DIFF

FROM PSFS.PS_DEPR_RPT pdr 

INNER JOIN PSFS.PS_GL_ACCT_LDGR PGAL 
    ON pdr.deptid =grp_br_ps_org_id
    AND (pdr.account_fa = pgal.acct_nbr or pdr.account_ad = pgal.acct_nbr)
    AND fiscal_yr_mth_nbr = 201508

INNER JOIN INTGRT_RPT.DIM_LOCATION IR 
      ON pdr.deptid = ir.erac_branch_ps_org_cd AND ir.curr_lrd_row_flg = 1

WHERE pdr.BUSINESS_UNIT = 'A0465'
AND pdr.BOOK = 'PERFORM'
AND pdr.FISCAL_YEAR = 2015
AND pdr.ACCOUNTING_PERIOD = 8
AND pdr.GROUP_ASSET_FLAG <> 'M'

GROUP BY 1,2,3,5, 7,9

ORDER BY 3,1, 2

1 个答案:

答案 0 :(得分:0)

简单解决此问题,对于您怀疑可能为null或空白的每个列/字段使用聚合函数Max()。聚合函数忽略大多数SQL引擎中的NULL。

示例示例

select * from tablename

id         col1               col2      col3
---------- ---------- ----------
1         Joey               250.00     255.00
1        (blank)            (blank)    (blank)

使用Max()

Select id, max(col1),max(col2), max(col3)
FROM tablename
Group by.....

     id         col1               col2      col3
    ---------- ---------- ----------
    1         Joey             250.00        250.00

SQL FIDDLE