表中数据:
FP SP
----------------------
A0 A1
A0 A2
A0 B0
B0 B1
B0 C0
C0 C1
C0 C2
C0 C3
C0 C4
如提取 FP=A0 的数据,只要 SP 中的数据尾数为 0 则继续提取,直到 SP 中的数据尾数没有 0 为止.
结果为:
FP SP
---------------------
A0 A1
A0 A2
A0 B1
C0 C1
C0 C2
C0 C3
C0 C4
谢谢!!!
CREATE procedure GETDATA(@FP VARCHAR(10))
AS
BEGIN
DECLARE @TEMP TABLE (FP VARCHAR(10),SP VARCGAR(10))
DECLARE @TEMP1 TABLE (FP VARCHAR(10),SP VARCGAR(10))
INSERT @TEMP1
SELECT FP,SP FROM TEST
WHERE FP=@FP
AND SP LIKE '%0'
WHILE EXISTS (
SELECT FP,SP FROM TEST T
WHERE FP IN (SELECT SP FROM @TEMP1)
AND SP LIKE '%0'
AND NOT EXISTS (
SELECT * FROM @TEMP1
WHERE FP=T.FP
AND SP=T.SP
)
)
INSERT @TEMP1
SELECT FP,SP FROM TEST T
WHERE FP IN (SELECT SP FROM @TEMP1)
AND SP LIKE '%0'
AND NOT EXISTS (
SELECT * FROM @TEMP1
WHERE FP=T.FP
AND SP=T.SP
)
INSERT @TEMP
SELECT FP,SP FROM TEST
WHERE FP=@FP
AND SP NOT LIKE '%0'
INSERT @TEMP
SELECT DISTINCT FP,SP FROM TEST
WHERE FP IN (SELECT FP FROM @TEMP1)
AND SP NOT LIKE '%0'
AND NOT EXISTS (
SELECT * FROM @TEMP
WHERE FP=T.FP
AND SP=T.SP
)
select * from @temp
END
GO