---------------------------------
-- Author: liangCK 小梁
---------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (ConText VARCHAR(6),CreateTime DATETIME)
INSERT INTO @T
SELECT '文本一','2008-10-3' UNION ALL
SELECT '文本二','2009-1-13' UNION ALL
SELECT '文本三','2007-9-18' UNION ALL
SELECT '文本四','2009-3-1' UNION ALL
SELECT '文本五','2008-7-15' UNION ALL
SELECT '文本六','2009-10-3'--SQL查询如下:SELECT
CreateTime,
ConText
FROM (
SELECT DISTINCT
RTRIM(YEAR(CreateTime))+'年' AS CreateTime,
'' AS ConText,
0 AS level,
YEAR(CreateTime) AS flag
FROM @T
UNION ALL
SELECT
RTRIM(MONTH(CreateTime))+'月',
ConText,
1,
YEAR(CreateTime)
FROM @T
) AS A
ORDER BY flag DESC,level/*
CreateTime ConText
-------------- -------
2009年
1月 文本二
3月 文本四
10月 文本六
2008年
10月 文本一
7月 文本五
2007年
9月 文本三(9 行受影响)*/
-- Author: liangCK 小梁
---------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (ConText VARCHAR(6),CreateTime DATETIME)
INSERT INTO @T
SELECT '文本一','2008-10-3' UNION ALL
SELECT '文本二','2009-1-13' UNION ALL
SELECT '文本三','2007-9-18' UNION ALL
SELECT '文本四','2009-3-1' UNION ALL
SELECT '文本五','2008-7-15' UNION ALL
SELECT '文本六','2009-10-3'--SQL查询如下:SELECT
CreateTime,
ConText
FROM (
SELECT DISTINCT
RTRIM(YEAR(CreateTime))+'年' AS CreateTime,
'' AS ConText,
0 AS level,
YEAR(CreateTime) AS flag
FROM @T
UNION ALL
SELECT
RTRIM(MONTH(CreateTime))+'月',
ConText,
1,
YEAR(CreateTime)
FROM @T
) AS A
ORDER BY flag DESC,level/*
CreateTime ConText
-------------- -------
2009年
1月 文本二
3月 文本四
10月 文本六
2008年
10月 文本一
7月 文本五
2007年
9月 文本三(9 行受影响)*/
-- Author: liangCK 小梁
---------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (ConText VARCHAR(6),CreateTime DATETIME)
INSERT INTO @T
SELECT '文本一','2008-10-3' UNION ALL
SELECT '文本二','2009-1-13' UNION ALL
SELECT '文本三','2007-9-18' UNION ALL
SELECT '文本四','2009-3-1' UNION ALL
SELECT '文本五','2008-7-15' UNION ALL
SELECT '文本六','2009-10-3'--SQL查询如下:SELECT
CreateTime,
ConText
FROM (
SELECT DISTINCT
RTRIM(YEAR(CreateTime))+'年' AS CreateTime,
'' AS ConText,
0 AS level,
YEAR(CreateTime) AS flag
FROM @T
UNION ALL
SELECT
RTRIM(MONTH(CreateTime))+'月',
ConText,
MONTH(CreateTime),
YEAR(CreateTime)
FROM @T
) AS A
ORDER BY flag DESC,level/*
CreateTime ConText
-------------- -------
2009年
1月 文本二
3月 文本四
10月 文本六
2008年
7月 文本五
10月 文本一
2007年
9月 文本三(9 行受影响)*/
insert into tb values('文本一' , '2008-10-3')
insert into tb values('文本二' , '2009-1-13')
insert into tb values('文本三' , '2007-9-18')
insert into tb values('文本四' , '2009-3-1')
insert into tb values('文本五' , '2008-7-15')
insert into tb values('文本六' , '2009-10-3')
goselect col1 , context from
(
select distinct datename(yy,createtime) + '年' col1 , context = '' , datename(yy,createtime) + '年' col4 from tb
union all
select datename(mm,createtime) + '月' col1 , ConText , datename(yy,createtime) + '年' col4 from tb
) t
order by col4 desc , case context when '' then 1 else 2 end drop table tb /*
col1 context
-------------------------------- ----------
2009年
01月 文本二
03月 文本四
10月 文本六
2008年
10月 文本一
07月 文本五
2007年
09月 文本三(所影响的行数为 9 行)*/
if object_id('[record]') is not null drop table [record]
go
create table [record]([ConText] varchar(6),[CreateTime] datetime)
insert [record]
select '文本一','2008-10-3' union all
select '文本二','2009-1-13' union all
select '文本三','2007-9-18' union all
select '文本四','2009-3-1' union all
select '文本五','2008-7-15' union all
select '文本六','2009-10-3'
---查询---
select b,c
from
(
select distinct year(CreateTime) as a,ltrim(year(CreateTime)) as b,' ' as c from record
union all
select year(CreateTime),ltrim(month(CreateTime))+'月',ConText from record
) t
order by a desc,right('00'+b,3),c ---结果---
b c
-------------- ------
2009
1月 文本二
3月 文本四
10月 文本六
2008
7月 文本五
10月 文本一
2007
9月 文本三(所影响的行数为 9 行)
-- Author: liangCK 小梁
---------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (ConText VARCHAR(6),CreateTime DATETIME)
INSERT INTO @T
SELECT '文本一','2008-10-3' UNION ALL
SELECT '文本二','2009-1-13' UNION ALL
SELECT '文本三','2007-9-18' UNION ALL
SELECT '文本四','2009-3-1' UNION ALL
SELECT '文本五','2008-7-15' UNION ALL
SELECT '文本六','2009-10-3'--SQL查询如下:SELECT
CASE WHEN YEAR(CreateTime) IS NULL
THEN LTRIM(MIN(YEAR(CreateTime)))+'年'
ELSE
LTRIM(MIN(MONTH(CreateTime)))+'月'
END AS CreateTime,
CASE WHEN YEAR(CreateTime) IS NULL
THEN ''
ELSE
MAX(ConText)
END AS ConText
FROM @T
GROUP BY YEAR(CreateTime),CreateTime
WITH ROLLUP
HAVING GROUPING(YEAR(CreateTime))=0
ORDER BY
CASE WHEN YEAR(CreateTime) IS NULL
THEN MIN(YEAR(CreateTime))
ELSE
YEAR(CreateTime)
END DESC,
CASE WHEN CreateTime IS NULL
THEN 0
ELSE
MIN(CreateTime)
END /*
CreateTime ConText
-------------- -------
2009年
1月 文本二
3月 文本四
10月 文本六
2008年
7月 文本五
10月 文本一
2007年
9月 文本三(9 行受影响)
*/