有本事就来啊,挑战TSQL语句

拓狼 2009-12-18 08:55:58
【挑战TSQL】父子结构数据的计算
http://www.windbi.com/showtopic-2955.aspx

【挑战TSQL】找出字符串里连续重复字符所在的位置以及长度
http://www.windbi.com/showtopic-2954.aspx

...全文
335 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjgsf1 2009-12-20
  • 打赏
  • 举报
回复
学习!
Oracle13g 2009-12-18
  • 打赏
  • 举报
回复
楼上的有点牛,嘿嘿...
  • 打赏
  • 举报
回复
来给windbi做广告了吧。
guguda2008 2009-12-18
  • 打赏
  • 举报
回复
一小撮没本事的烤鸭路过
dawugui 2009-12-18
  • 打赏
  • 举报
回复
最好给出完整的表结构,测试数据,计算方法和正确结果.


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
  • 打赏
  • 举报
回复
没这个本事,闪
小坏猪猪 2009-12-18
  • 打赏
  • 举报
回复
learing
--小F-- 2009-12-18
  • 打赏
  • 举报
回复
学习
Mr_Nice 2009-12-18
  • 打赏
  • 举报
回复
路过,看看!
SQL77 2009-12-18
  • 打赏
  • 举报
回复
路过
fcuandy 2009-12-18
  • 打赏
  • 举报
回复
来几个有点难度的吧
-狙击手- 2009-12-18
  • 打赏
  • 举报
回复
NX
vivian_lanlan 2009-12-18
  • 打赏
  • 举报
回复
DECLARE @t TABLE (Data VARCHAR(40) )
INSERT @t (Data) SELECT '9992EDC6-D117-4DEE-B410-4E5FAE46AE97'
INSERT @t (Data) SELECT '0BFC936B-BD9A-4C6A-AFB2-CF3F1752F8B1'
INSERT @t (Data) SELECT '4A73E7EB-7777-4A04-9258-F1E75097977C'
INSERT @t (Data) SELECT '5AAF477C-274D-400D-9067-035968F33B19'
INSERT @t (Data) SELECT '725DA718-30D0-44A9-B36A-89F27CDFEEDE'
INSERT @t (Data) SELECT '8083ED5A-D3B9-4694-BB04-F0B09C588888'

;WITH Liang AS
(
SELECT A.Data,B.number,
ROW_NUMBER() OVER(PARTITION BY A.Data ORDER BY B.number)-B.number AS rowid,
SUBSTRING(A.Data,B.number,1) AS [Char]
FROM @t AS A
JOIN master.dbo.spt_values AS B
ON B.type = 'P' AND SUBSTRING(A.Data,B.number,1)=SUBSTRING(A.Data,B.number+1,1)
AND B.number < LEN(A.Data)
)
SELECT *
FROM(
SELECT Data,[Char],
MIN(number) AS Pos,COUNT(*)+1 AS [Length]
FROM Liang
GROUP BY Data,[Char],rowid
) AS T
ORDER BY MAX(Length) OVER(PARTITION BY Data) DESC,Data,Pos

/*
Data Char Pos Length
---------------------------------------- ---- ----------- -----------
8083ED5A-D3B9-4694-BB04-F0B09C588888 B 20 2
8083ED5A-D3B9-4694-BB04-F0B09C588888 8 32 5
4A73E7EB-7777-4A04-9258-F1E75097977C 7 10 4
4A73E7EB-7777-4A04-9258-F1E75097977C 7 34 2
9992EDC6-D117-4DEE-B410-4E5FAE46AE97 9 1 3
9992EDC6-D117-4DEE-B410-4E5FAE46AE97 1 11 2
9992EDC6-D117-4DEE-B410-4E5FAE46AE97 E 17 2
5AAF477C-274D-400D-9067-035968F33B19 A 2 2
5AAF477C-274D-400D-9067-035968F33B19 7 6 2
5AAF477C-274D-400D-9067-035968F33B19 0 16 2
5AAF477C-274D-400D-9067-035968F33B19 3 32 2
725DA718-30D0-44A9-B36A-89F27CDFEEDE 4 15 2
725DA718-30D0-44A9-B36A-89F27CDFEEDE E 33 2

(13 行受影响)


*/
vivian_lanlan 2009-12-18
  • 打赏
  • 举报
回复
DECLARE @emp TABLE (
EmployeeID INT,
FirstName VARCHAR(15),
LastName VARCHAR(15),
ReportsTo INT
)

DECLARE @ord TABLE (
OrderID INT,
EmployeeID INT
)

INSERT INTO @emp(EmployeeID, FirstName, LastName, ReportsTo)
SELECT 2,'Andrew','Fuller',NULL UNION ALL
SELECT 1,'Nancy','Davolio',2 UNION ALL
SELECT 3,'Janet','Leverling',2 UNION ALL
SELECT 4,'Margaret','Peacock',2 UNION ALL
SELECT 5,'Steven','Buchanan',2 UNION ALL
SELECT 8,'Laura','Callahan',2 UNION ALL
SELECT 6,'Michael','Suyama',5 UNION ALL
SELECT 7,'Robert','King',5 UNION ALL
SELECT 9,'Anne','Dodsworth',5

INSERT INTO @ord (OrderID, EmployeeID)
SELECT 10258,1 UNION ALL
SELECT 10270,1 UNION ALL
SELECT 10275,1 UNION ALL
SELECT 10265,2 UNION ALL
SELECT 10277,2 UNION ALL
SELECT 10251,3 UNION ALL
SELECT 10253,3 UNION ALL
SELECT 10256,3 UNION ALL
SELECT 10250,4 UNION ALL
SELECT 10252,4 UNION ALL
SELECT 10248,5 UNION ALL
SELECT 10254,5 UNION ALL
SELECT 10249,6 UNION ALL
SELECT 10289,7 UNION ALL
SELECT 10303,7 UNION ALL
SELECT 10308,7 UNION ALL
SELECT 10262,8 UNION ALL
SELECT 10268,8 UNION ALL
SELECT 10276,8 UNION ALL
SELECT 10278,8 UNION ALL
SELECT 10255,9 UNION ALL
SELECT 10263,9

;WITH Liang AS
(
SELECT A.*,B.[Count]
FROM @emp AS A
LEFT JOIN (SELECT EmployeeID,COUNT(*) AS [Count]
FROM @ord GROUP BY EmployeeID) AS B
ON A.EmployeeID = B.EmployeeID
),
Liang3 AS
(
SELECT A.EmployeeID AS flag ,B.EmployeeID AS empid,B.ReportsTo AS parentID,
B.[Count]
FROM Liang AS A
JOIN Liang AS B
ON A.EmployeeID = B.ReportsTo
UNION ALL
SELECT A.flag,B.EmployeeID,B.ReportsTo,
ISNULL(B.[Count],0)
FROM Liang3 AS A
JOIN Liang AS B
ON A.empid = B.ReportsTo
),
Liang4 AS
(
SELECT A.EmployeeID,ISNULL(B.[Count],0) AS [Count]
FROM Liang AS A
LEFT JOIN (
SELECT flag,SUM([Count]) AS [Count] FROM Liang3
GROUP BY flag
) AS B
ON A.EmployeeID=B.flag
),
Liang2 AS
(
SELECT A.EmployeeID,CAST(LastName+','+FirstName AS varchar(50)) AS Name,
ReportsTo,A.[Count],
CAST(ROW_NUMBER() OVER(ORDER BY B.[Count] DESC) AS varbinary(MAX)) AS tree,
level = 0,B.[Count] AS total
FROM Liang AS A
JOIN Liang4 AS B
ON A.EmployeeID=B.EmployeeID
WHERE ReportsTo IS NULL
UNION ALL
SELECT A.EmployeeID,CAST(LastName+','+FirstName AS varchar(50)) AS name,
A.ReportsTo,A.[Count],
CAST(B.tree+CAST(ROW_NUMBER() OVER(PARTITION BY A.ReportsTo
ORDER BY C.[Count] DESC,A.[Count] DESC) AS binary(4))
AS varbinary(MAX)),
B.level + 1,C.[Count]
FROM Liang AS A
JOIN Liang2 AS B
ON B.EmployeeID = A.ReportsTo
JOIN Liang4 AS C
ON A.EmployeeID=C.EmployeeID
)
SELECT REPLICATE(' ',A.level*2)+'|--'+A.Name AS Name,
level,
by_self=ISNULL(A.[Count],0),
by_sub=ISNULL(A.[total],0),
total=ISNULL(A.[Count],0)+ISNULL(A.[total],0)
FROM Liang2 AS A
ORDER BY tree;

/*
Name level by_self by_sub total
-------------------------------------------------- ----------- ----------- ----------- -----------
|--Fuller,Andrew 0 2 20 22
|--Buchanan,Steven 1 2 6 8
|--King,Robert 2 3 0 3
|--Dodsworth,Anne 2 2 0 2
|--Suyama,Michael 2 1 0 1
|--Callahan,Laura 1 4 0 4
|--Davolio,Nancy 1 3 0 3
|--Leverling,Janet 1 3 0 3
|--Peacock,Margaret 1 2 0 2

(9 行受影响)
*/
? 第四章 T-SQL编程 ? ? 1、TSQL语句的分类 ? 2、TSQL语句实战1 ? 3、TSQL语句实战2 ? 4、TSQL语句实战3 ? 5、TSQL语句实战4 ? 6、TSQL语句实战5 ? 7、TSQL语句实战6 ? 8、TSQL语句实战7 ? 9、TSQL语句实战8 ? 10、TSQL语句实战9 ? 11、TSQL语句实战10 ? 12、TSQL语句实战11 ? 13、TSQL语句实战12 ? 14、TSQL语句实战13 ? 15、TSQL语句实战14 ? 16、TSQL语句实战15 ? 17、TSQL语句实战16 ? 18、TSQL语句实战17 ? 19、TSQL语句实战18 ? 20、TSQL语句实战19 ? 21、TSQL语句实战20 ? ? 第五章 函数 ? ? 1、函数简介 ? 2、函数(1) ? 3、函数(2) ? 4、函数(3) ? 5、函数(4) ? 6、函数(5) ? 7、函数(6) ? 8、函数(7) ? 9、函数(8) ? 10、函数(9) ? 11、函数(10) ? 12、函数(11) ? 13、函数(12) ? 14、函数(13) ? 15、函数(14) ? 16、函数(15) ? 17、函数(16) ? 18、函数(17) ? 19、函数(18) ? 20、函数(19) ? 21、函数(20) ? 22、函数(21) ? 23、函数(22) ? ? ? 第六章 存储过程 ? ? 1、存储过程(1) ? 2、存储过程(2) ? 3、存储过程(3) ? 4、存储过程(4) ? 5、存储过程(5) ? 6、存储过程(6) ? 7、存储过程(7) ? 8、存储过程(8) ? 9、存储过程(9) ? 10、存储过程(10) ? 11、存储过程(11) ? 12、存储过程(12) ? 13、存储过程(13) ? 14、存储过程(14) ? 15、存储过程(15) ? 16、存储过程(16) ? 17、存储过程(17) ? 18、存储过程(18) ? 19、存储过程(19) ? 20、存储过程(20) ? 21、存储过程(21) ? ? 第七章 游标 ? ? 1、游标1 ? 2、游标2 ? 3、游标3 ? 4、游标4 ? 5、游标5 ? 6、游标6 ? 7、游标7 ? 8、游标8 ? 9、游标9

27,582

社区成员

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

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