现有这样一张单据
单据编号 作废标识
001 1
002 1
003 0
004 0
005 0
006 1
007 0
008 0
009 1
010 0
011 1
012 0
013 0
014 1
015 0
016 0
出这样一张报表
本期领用 本期作废
份数 起始号码 截止号码 份数 起始号码 截止号码
null null null 2 001 002
3 003 005 1 006 006
2 007 008 1 009 009
1 010 010 1 011 011
2 012 013 1 014 014
2 015 016
1表示作废 0标识正常单据
注意只管数据就好,表头上面的本期领用和本期作废不用管
本来前面已经发过这个帖子,而且各位大侠都帮解决了,但是客户要求顺序显示,今天弄了一天硬是没弄出来,望大虾们再帮改改
单据编号 作废标识
001 1
002 1
003 0
004 0
005 0
006 1
007 0
008 0
009 1
010 0
011 1
012 0
013 0
014 1
015 0
016 0
出这样一张报表
本期领用 本期作废
份数 起始号码 截止号码 份数 起始号码 截止号码
null null null 2 001 002
3 003 005 1 006 006
2 007 008 1 009 009
1 010 010 1 011 011
2 012 013 1 014 014
2 015 016
1表示作废 0标识正常单据
注意只管数据就好,表头上面的本期领用和本期作废不用管
本来前面已经发过这个帖子,而且各位大侠都帮解决了,但是客户要求顺序显示,今天弄了一天硬是没弄出来,望大虾们再帮改改
--取未作废的起始编号
select a.fno,'b' fs
from tb a
left join b on a.fno=b.fno+1
where a.fstat=0 and b.fstat=1
union all
--取未作废的结束编号
select a.fno,'e'
from tb a
left join b on a.fno=b.fno-1
where a.fstat=0 and b.fstat=1
比如
001 1
002 0
003 0
004 1
005 0
显示格式是这个样子的
本期领用 本期作废
份数 起用号 止号 份数 起用号 止号
null null null 1 001 001
2 002 003 1 004 004
1 005 005 null null null
DECLARE @TB TABLE([NO] VARCHAR(3), [FLAG] INT)
INSERT @TB
SELECT '001', 1 UNION ALL
SELECT '002', 1 UNION ALL
SELECT '003', 0 UNION ALL
SELECT '004', 0 UNION ALL
SELECT '005', 0 UNION ALL
SELECT '006', 1 UNION ALL
SELECT '007', 0 UNION ALL
SELECT '008', 0 UNION ALL
SELECT '009', 1 UNION ALL
SELECT '010', 0 UNION ALL
SELECT '011', 1 UNION ALL
SELECT '012', 0 UNION ALL
SELECT '013', 0 UNION ALL
SELECT '014', 1 UNION ALL
SELECT '015', 0 UNION ALL
SELECT '016', 0DECLARE @FLAG INT
SET @FLAG=(SELECT TOP 1 FLAG FROM @TB ORDER BY NO)SELECT *,ID=IDENTITY(INT,1,1) INTO # FROM @TB WHERE FLAG=1 ORDER BY NO
SELECT *,ID=IDENTITY(INT,1,1) INTO #2 FROM @TB WHERE FLAG=0 ORDER BY NOSELECT *,ID=IDENTITY(INT,1,1) INTO #T
FROM (SELECT COUNT(*) AS CNT, MIN(NO) AS MINNO,MAX(NO) AS MAXNO FROM # GROUP BY NO-ID) AS T
ORDER BY MINNOSELECT *,ID=IDENTITY(INT,1,1) INTO #T2
FROM (SELECT COUNT(*) AS CNT, MIN(NO) AS MINNO,MAX(NO) AS MAXNO FROM #2 GROUP BY NO-ID) AS T
ORDER BY MINNOSELECT B.CNT,B.MINNO,B.MAXNO,A.CNT,A.MINNO,A.MAXNO
FROM #T AS A FULL JOIN #T2 AS B
ON (@FLAG=1 AND A.ID=B.ID+1) OR (@FLAG=0 AND A.ID+1=B.ID)
DROP TABLE #
DROP TABLE #2
DROP TABLE #T
DROP TABLE #T2