要和上一行作比较的话, 那要使用 ROW_NUMBER() 来处理了。
你先执行下面的 SQL, 通过 Number 那一列, 先核对以下,
是不是 Number 为1 的那一行,要显示 ar
Number 不为1的那一行,不显示 ar
SELECT
ar,
ROW_NUMBER() OVER (PARTITION BY ar ORDER BY dt) AS Number,
other字段
FROM
(
select
case when a is not null then cast(a as varchar(10)) + ad
when a is null then ad end ar,
dt,
other字段
from
table
where
year(dt) >2008 and stcd = '402015'
) tmpView
order by ar, dt
如果上面的查询,满足预期的要求的话,那么使用 CASE WHEN。
将 ROW_NUMBER() OVER (PARTITION BY ar ORDER BY dt) = 1 的, 显示 ar
其他的,不显示出来。
SELECT
CASE WHEN
ROW_NUMBER() OVER (PARTITION BY ar ORDER BY dt) = 1 THEN ar
ELSE ''
END AS ar,
other字段
FROM
(
select
case when a is not null then cast(a as varchar(10)) + ad
when a is null then ad end ar,
dt,
other字段
from
table
where
year(dt) >2008 and stcd = '402015'
) tmpView
order by ar, dt
你要对行跟行之间进行比较的话,一句select是很难实现的,建议你使用游标。