62,046
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE #TB1(id INT, 项目 VARCHAR(10), 结果 VARCHAR(10), 日期 VARCHAR(10))
INSERT INTO #TB1
SELECT '1', 'a', '123', '2011' UNION ALL
SELECT '2', 'b', '234', '2011' UNION ALL
SELECT '3', 'c', '345', '2011' UNION ALL
SELECT '4', 'd', '456', '2010' UNION ALL
SELECT '5', 'e', '567', '2009' UNION ALL
SELECT '6', 'a', '123', '2011' UNION ALL
SELECT '7', 'b', '234', '2011' UNION ALL
SELECT '8', 'c', '345', '2011' UNION ALL
SELECT '9', 'd', '456', '2010' UNION ALL
SELECT '10', 'e', '567', '2009';
declare @count int --你想把多少个结果作为一行
set @count = 5
select id / @count as id,
result = (select ' ' + 项目 + ' ' + 结果 + ' ' + 日期 from #tb1 tb where tb.id > @count * t.id / @count - @count and tb.id <= @count * t.id / @count for xml path(''))
from #tb1 t where id % @count = 0
/*---------------结果---------------------
1 a 123 2011 b 234 2011 c 345 2011 d 456 2010 e 567 2009
2 a 123 2011 b 234 2011 c 345 2011 d 456 2010 e 567 2009
*/
CREATE TABLE TB(id INT, 项目 VARCHAR(10), 结果 VARCHAR(10), 日期 VARCHAR(10))
INSERT INTO dbo.TB
SELECT '1', 'a', '123', '2011' UNION ALL
SELECT '2', 'b', '234', '2011' UNION ALL
SELECT '3', 'c', '345', '2011' UNION ALL
SELECT '4', 'd', '456', '2010' UNION ALL
SELECT '5', 'e', '567', '2009' UNION ALL
SELECT '6', 'a', '123', '2011' UNION ALL
SELECT '7', 'b', '234', '2011' UNION ALL
SELECT '8', 'c', '345', '2011' UNION ALL
SELECT '9', 'd', '456', '2010' UNION ALL
SELECT '10', 'e', '567', '2009';
SELECT
MAX(CASE WHEN 项目='a' THEN id END),
MAX(CASE WHEN 项目='a' THEN 项目 END),
MAX(CASE WHEN 项目='a' THEN 结果 END),
MAX(CASE WHEN 项目='a' THEN 日期 END),
MAX(CASE WHEN 项目='b' THEN id END),
MAX(CASE WHEN 项目='b' THEN 项目 END),
MAX(CASE WHEN 项目='b' THEN 结果 END),
MAX(CASE WHEN 项目='b' THEN 日期 END),
MAX(CASE WHEN 项目='c' THEN id END),
MAX(CASE WHEN 项目='c' THEN 项目 END),
MAX(CASE WHEN 项目='c' THEN 结果 END),
MAX(CASE WHEN 项目='c' THEN 日期 END),
MAX(CASE WHEN 项目='d' THEN id END),
MAX(CASE WHEN 项目='d' THEN 项目 END),
MAX(CASE WHEN 项目='d' THEN 结果 END),
MAX(CASE WHEN 项目='d' THEN 日期 END),
MAX(CASE WHEN 项目='e' THEN id END),
MAX(CASE WHEN 项目='e' THEN 项目 END),
MAX(CASE WHEN 项目='e' THEN 结果 END),
MAX(CASE WHEN 项目='e' THEN 日期 END)
FROM dbo.TB GROUP BY id/6;
DROP TABLE dbo.TB;
/*
----------- ---------- ---------- ---------- ----------- ---------- ---------- ---------- ----------- ---------- ---------- ---------- ----------- ---------- ---------- ---------- ----------- ---------- ---------- ----------
1 a 123 2011 2 b 234 2011 3 c 345 2011 4 d 456 2010 5 e 567 2009
6 a 123 2011 7 b 234 2011 8 c 345 2011 9 d 456 2010 10 e 567 2009
警告: 聚合或其他 SET 操作消除了空值。
(2 行受影响)
*/