SQL 2000 统计数量

xingxing9951 2011-04-11 02:15:24
/*
SQL 2000有表ResultSN(ID,SN,CSN),SN、CSN为Varchar,ID自动增长

ID SN CSN
1 A000 B1 *
2 B1 A000 *
3 A001 B0 #
4 B0 A001 #
5 A002 B2
6 A003 B5
7 B78K CV
8 CV B78K
9 D01 BES80
10 EE0 SSE
11 SSE EEO

某条记录的SN与CSN的值可能与其他记录的CSN,SN值相同,也可能不相同,(相同时只可能与相邻的下一个数据记录相同)
例如:第1条记录SN,CSN的值(A000,B1)分别与第2条记录的CSN,SN(A000,B1)值相同,这2条记录是1个成品,数量为1
第3条记录SN,CSN的值(A001,B0)分别与第4条记录的CSN,SN(A001,B0)值相同,这2条记录是1个成品,数量为1
第5条记录SN,CSN的值(A002,B2)分别与第6条记录的CSN,SN(B5,A003)值均不相同,这2条记录是2个成品,数量为2
即当前记录的SN值和CSN值分别与下条记录的CSN值和SN值相同时, 这2条记录的成品数量是1【这是关键。这种记录的成品数量怎么统计】
当前记录的SN值和CSN值分别与下条记录的CSN值和SN值不相同时,这2条记录的成品数量是2

请计算出表中的成品数量
*/
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingxing9951 2011-04-11
  • 打赏
  • 举报
回复
wwwwgou(Shawn)
还在吗。。。。。帮忙看下。。。。统计数量有误哦~!@@
xingxing9951 2011-04-11
  • 打赏
  • 举报
回复
数量统计的不对哦,,,给出的实例中成品数量只有7个,,请帮忙看下

ID SN CSN
1 A000 B1 1
2 B1 A000 1
3 A001 B0 2
4 B0 A001 2
5 A002 B2 3
6 A003 B5 4
7 B78K CV 5
8 CV B78K 5
9 D01 BES80 6
10 EE0 SSE 7
11 SSE EEO 7

Shawn 2011-04-11
  • 打赏
  • 举报
回复
或者
SELECT TotalCount = COUNT(1)
FROM #temp T
WHERE NOT EXISTS(SELECT 1 FROM #temp
WHERE ID = (SELECT MIN(ID) FROM #temp WHERE ID > T.ID)
AND SN = T.CSN
AND CSN = T.SN
)
Shawn 2011-04-11
  • 打赏
  • 举报
回复
CREATE TABLE #temp
(
id INT IDENTITY,
SN VARCHAR(10),
CSN VARCHAR(10)
)
INSERT #temp
SELECT 'A000', 'B1' UNION ALL
SELECT 'B1', 'A000' UNION ALL
SELECT 'A001', 'B0' UNION ALL
SELECT 'B0', 'A001' UNION ALL
SELECT 'A002', 'B2' UNION ALL
SELECT 'A003', 'B5' UNION ALL
SELECT 'B78K', 'CV' UNION ALL
SELECT 'CV', 'B78K' UNION ALL
SELECT 'D01', 'BES80' UNION ALL
SELECT 'EE0', 'SSE' UNION ALL
SELECT 'SSE', 'EEO'
GO
--SQL:
SELECT TotalCount = COUNT(1)
FROM #temp T
WHERE NOT EXISTS(SELECT 1 FROM #temp
WHERE ID = (SELECT MAX(ID) FROM #temp WHERE ID < T.ID)
AND SN = T.CSN
AND CSN = T.SN
)
/*
totalCount
8
*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧