2016-10-04 58 views
0

我使用SQL Server 2012的下面中选择特定行是一个示例数据集SQL Server中的组

Prefix_Suffix First_Nm Last_Nm Acct_Registration_Line_1 Acct_Registration_Line_2 secondlevel TopLevel 
NULL Jane Smith NULL NULL smith1-rep abc-quarterly 
NULL John Smith NULL NULL smith1-rep abc-quarterly 
Jane Smith NULL NULL IRA FBO Jane Smith (EQUITY) PERSHING LLC AS CUSTODIAN smith1-rep abc-quarterly 
Jane Smith NULL NULL IRA FBO Jane Smith (FI) PERSHING LLC AS CUSTODIAN smith1-rep abc-quarterly 
John Smith NULL NULL IRA FBO John Smith (EQUITY) PERSHING LLC AS CUSTODIAN smith1-rep abc-quarterly 
John Smith NULL NULL IRA FBO John Smith (FI) PERSHING LLC AS CUSTODIAN smith1-rep abc-quarterly 

这个数据出现在各种序列中,有时只有行,其中First_Nm(名)和Last_Nm(姓)填充,Prefix_Suffix为NULL。有时会填充Prefix_Suffix,并且名字和姓氏字段为空。如果它是全部或全部为NULL,我可以处理。我正在努力的行是两个空方案出现在一个组中。一个组在第二级列中具有相同的值。

如果一个组内Prefix_Suffix包含一个值和姓和名都为空&也有地方名字和姓氏包含的值,Prefix_Suffix为null,则我不希望有Prefix_Sufix值的任何行的行。所以当示例数据集发生时,我想过滤它以消除Prefix_Suffix填充的4行。再次,我只希望在具有前缀_Suffix & First_nm和Last_Nm之间交替的NULLS的分组中得到这种结果。

所需的结果

Prefix_Suffix First_Nm Last_Nm Acct_Registration_Line_1 Acct_Registration_Line_2 secondlevel TopLevel 
NULL Jane Smith NULL NULL smith1-rep abc-quarterly 
NULL John Smith NULL NULL smith1-rep abc-quarterly 

这是当前select语句。我试图用UNION ALL隔离2个NULL场景,但这还不够。

WITH DATA AS 
(
SELECT *, 
COUNT(Acct_Nbr) OVER (PARTITION BY acct_nbr)AcctCount 
FROM ##temptable 
WHERE 1 = 1 
AND acct_holder_role_cd <> 'sec' 
) 
SELECT * 
INTO ##PrefixedAccounts 
FROM DATA 
WHERE AcctCount = 1 AND Last_Nm IS NULL; 
SELECT 
RcdTypId,Acct_Nbr,Acct_Short_Nm,Acct_Holder_Typ_Cd,Acct_Holder_Role_Cd, Prefix_Suffix 
,First_Nm,Middle_Nm,Last_Nm,Acct_Registration_Line_1,Acct_Registration_Line_2 
INTO ##temptable2 
FROM ##temptable 
WHERE NOT EXISTS 
(
SELECT ##PrefixedAccounts.Acct_Nbr 
FROM ##PrefixedAccounts 
WHERE ##PrefixedAccounts.Acct_Nbr = ##temptable.Acct_Nbr 
); 
WITH DATA AS 
(
SELECT 
RcdTypId,Acct_Nbr,Acct_Short_Nm,Acct_Holder_Typ_Cd,Acct_Holder_Role_Cd,Prefix_Suffix, 
NULL AS First_Nm, Middle_Nm, Last_Nm,Acct_Registration_Line_1,Acct_Registration_Line_2 
FROM ##PrefixedAccounts 
UNION ALL 
SELECT 
RcdTypId,Acct_Nbr,Acct_Short_Nm,Acct_Holder_Typ_Cd,Acct_Holder_Role_Cd,NULL AS Prefix_Suffix,First_Nm,Middle_Nm,Last_Nm, 
NULL AS Acct_Registration_Line_1,NULL AS Acct_Registration_Line_2 
FROM ##temptable2 
) 
SELECT * INTO ##ClientNames FROM DATA 
DROP TABLE ##temptable2 
DROP TABLE ##PrefixedAccounts 

-- SELECT * FROM ##ClientNames ORDER BY prefix_Suffix desc 
-- DROP TABLE ##ClientNames 

SELECT distinct 
cl.Prefix_Suffix,cl.First_Nm,cl.Last_Nm,cl.Acct_Registration_Line_1,cl.Acct_Registration_Line_2 
,at.secondlevel,at.TopLevel FROM ##ClientNames cl 
INNER JOIN ##AddeparTemplate at ON cl.Acct_nbr = at.owned 
WHERE 1 = 1 
AND (cl.Last_Nm IS NOT NULL OR cl.Acct_Registration_Line_1 IS NOT NULL) 
ORDER BY cl.prefix_suffix, at.secondlevel 
DROP TABLE ##ClientNames 
+1

提供 –

+0

添加SELECT语句 –

回答

0

这是你想要的吗?

​​
+0

它不是相当的工作当前的SELECT语句。当组中的姓氏中有任何值时。我不需要Prefix_Suffix为NULL的任何行。我只希望Prefix_Suffix是所有的lastName值在一个组中是NULL。 –