问题:
会计科目维护:NC_ACCOUNT_SUBJECT
辅助核算维护:NC_ACCOUNT_AUXILIARY
会计科目和辅助核算两者的:关系表:NC_ACCOUNT_SUBJECT_AUXILIARY
一共有多个辅助,想在一行显示出来,哪些辅助是,哪些辅助不是;
比如:
解决方法:
运用函数来解决的,
创建函数:
CREATE OR REPLACE FUNCTION F_GET_SUBJECT_AUXILIARY (
p_subject_id IN VARCHAR2,
p_code IN VARCHAR2
) return VARCHAR2 IS Result VARCHAR2 ( 200 );
BEGIN
SELECT
DECODE(COUNT(1),0,'否','是') INTO Result
FROM
NC_ACCOUNT_AUXILIARY NAA
LEFT JOIN
NC_ACCOUNT_SUBJECT_AUXILIARY NASA ON NASA.AUXILIARY_ACCOUNT_ID = NAA.ID
WHERE NASA.SUBJECT_ID = p_subject_id
AND NAA.CODE = p_code;
return Result ;
END F_GET_SUBJECT_AUXILIARY;
SQL语句调用函数来显示:
SELECT
--NAS.* ,
nas.apply_type as 单据类型,
nas.org_id as 机构代码,
nas.org_name as 机构名称,
nas.code as 会计科目编码,
nas.name as 会计科目名称,
nas.cost_code as 费用编码,
nas.cost_name as 费用名称,
nas.detail_code as 明细费用编码,
nas.detail_name as 明细费用名称,
nas.company_id as 公司主键,
DECODE(NAS.SUBJECT_DIRECTION,'00','借','10','贷',NAS.SUBJECT_DIRECTION) 科目方向,
nas.subject_line_number as 科目行号,
F_GET_SUBJECT_AUXILIARY(NAS.ID,'DEPT_ACCT') AS 部门辅助核算,
F_GET_SUBJECT_AUXILIARY(NAS.ID,'STAF_ACCT') AS 人员辅助核算,
F_GET_SUBJECT_AUXILIARY(NAS.ID,'BANK_ACCT') AS 银行帐户辅助核算,
F_GET_SUBJECT_AUXILIARY(NAS.ID,'CASH_ACCT') AS 现金流量辅助核算,
F_GET_SUBJECT_AUXILIARY(NAS.ID,'CUST_ACCT') AS 客商辅助核算,
F_GET_SUBJECT_AUXILIARY(NAS.ID,'UNIT_ACCT') AS 单位分类辅助核算,
nas.amount_type as 金额取值
--F_GET_SUBJECT_AUXILIARY(NAS.ID,'XM_ACCT') AS XM_ACCT, 项目
FROM
NC_ACCOUNT_SUBJECT NAS
LEFT JOIN
SEC_ORGANIZATION SO ON NAS.ORG_ID = SO.ID
WHERE
1 =1
ORDER BY NAS.ORG_ID,APPLY_TYPE_CODE