我是SQL的新手(使用SQL Server Management Studio)并且没有更好地理解术语我担心我不知道该搜索什么可以找到这个问题的答案某处。我的问题是,帐号被分为两部分:主要和次要,并且有一个条件,其中未成年人是" 00"必须存在才能有一个未成年人" 01"通过" 99"拥有相同的主要帐户。帐号之间的连字符用于说明目的。
正确帐号的示例
INCORRECT帐号的示例
主要帐户可以有多次迭代(1000)和次要帐户的多次迭代(00,01,02,05),但是,如果(2001-00)没有,则不能存在(2001-01)。
我正在寻找的解决方案是输出" 2001-01"因为该帐户在帐户" 2001-00"之前不能存在不存在。
如果有任何问题,我会尽力回答。谢谢!
答案 0 :(得分:1)
试试这个
DECLARE @Account_Num TABLE
(
id INT IDENTITY(1, 1),
account_number VARCHAR(10)
)
INSERT INTO @Account_Num
VALUES ('1000-00'),
('1000-01'),
('1000-05'),
('2000-00'),
('2000-02'),
('2001-01')
SELECT A.ACCOUNT_NUMBER,
CASE
WHEN T.ACCOUNT_NUMBER IS NOT NULL THEN 'VALID NUMBER'
ELSE 'INVALID NUMBER'
END AS ACCOUNT_STATUS
FROM @Account_Num A
OUTER APPLY (SELECT TOP 1 B.account_number
FROM @Account_Num B
WHERE LEFT(A.account_number, 4) = LEFT(B.account_number, 4)
AND RIGHT(B.account_number, 2) = '00')T