关于sql server 查询语句条件的问题

select case when a is not null then cast(a as varchar(10)) + ad when a is null then ad end ar,
from table where year(dt) >2008 and stcd = '402015' order by dt
现有的条件语句,想加入条件,使查询出的结果,ar的内容,如果和上一行一样使用“''” 替换

要和上一行作比较的话, 那要使用 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

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/1cec59132b924006c83d6d4e.html

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-06
你要对行跟行之间进行比较的话,一句select是很难实现的,建议你使用游标。
相似回答