My Required Output should be like this我必须用分隔符连接多值记录的子流量,如果中间子值为null,我必须与Just separator连接。我写了以下代码。
SELECT B.ACCOUNT_NUMBER ,B.co_code,(select CASE WHEN OTHER_OFFICER IS NOT NULL AND 0 < (SELECT COUNT(C.ACCOUNT_NUMBER) FROM EFZ_ACCOUNT_DETAILS C
where C.ACCOUNT_NUMBER = A.ACCOUNT_NUMBER AND C.OTHER_OFFICER IS NULL ) THEN ISNULL(B.OTHER_OFFICER +']',']')
ELSE NULL
END
from EFZ_ACCOUNT_DETAILS A
where A.ACCOUNT_NUMBER = b.ACCOUNT_NUMBER
FOR XML PATH(''))AS ACC_DEB_LIMIT
FROM EFZ_ACCOUNT_DETAILS b
GROUP BY ACCOUNT_NUMBER,co_code
这是有效的,但即使多值记录的所有子值都为null,它也会与分隔符连接,输出就像这样
我也尝试了这个逻辑,它给了我相同的结果
SELECT ACCOUNT_NUMBER ,co_code, STUFF(( SELECT isnull(']'+ OTHER_OFFICER,']') FROM EFZ_ACCOUNT_DETAILS a
WHERE b.ACCOUNT_NUMBER = a.ACCOUNT_NUMBER FOR XML PATH('')),1 ,1, '') alt_account_type
FROM EFZ_ACCOUNT_DETAILS b
GROUP BY ACCOUNT_NUMBER,co_code;
答案 0 :(得分:0)
我不确定我是否完全理解您的要求,但此查询是否会解决您的问题。
SELECT
CASE
WHEN d IS NULL AND c IS NOT NULL THEN
ISNULL(a,'')+']'+ISNULL(b,'')+']'+ c
WHEN d IS NULL AND c IS NULL AND b IS NOT NULL THEN
ISNULL(a,'')+']'+ b
WHEN d IS NULL AND c IS NULL AND b IS NULL AND a IS NOT NULL THEN
a
WHEN d IS NULL AND c IS NULL AND b IS NULL AND a IS NULL THEN
NULL
ELSE
ISNULL(a,'')+']'+ISNULL(']'+b,'')+']'+ISNULL(']'+c,'')+']'+ISNULL(d,'')+']'
END 来自TestTable;
请参阅SQL fiddle