如何在同一表中循环提取数据(用存取过程)???

表中数据:
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

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus