我正在开发以下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
答案 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