Этот вид отчета стиль форматирования лучше делать в правильном приложении для отчетов, но это можно сделать и на сервере.
Если вы использовали версию SQL Server> = 2005 (который вы действительно должны сейчас), вы могли бы использовать оконные функции для достижения этой цели достаточно легко, как это:
select case when rn = 1 then id else null end as id, value
from (
select *, rn = row_number() over (partition by id order by id, value)
from your_table
) a
, но так как вы используете древняя версия без функции row_number
, мы должны как-то подражать этому. Один из способов - использовать количество строк в скоррелированном подзапросе - это должно работать, хотя оно не будет особенно эффективным.
select
case when (
select count(*)
from your_table
where value <= t1.value
and ID = t1.ID
) = 1 then ID
else null end as id
, value
from your_table as t1
Поскольку у меня нет доступа к любому серверу со старой версии я не мог проверить это, но я не вижу каких-либо очевидных причин, что он не должен работать.
печального для форматирования вопросов, ID столбец имеет следующие значения: 1, 2 и столбец Value имеют значение A1..A3, B1 ... B3 –
Ouch ... вам все еще нужно использовать sql 2000? Это форматирование действительно должно быть оставлено на переднем конце. Это довольно уродливо с «новыми» функциями окна, но в sql 2000 этот тип вещей просто уродлив. –
Обновление уже :) Поддержка Mainstream для SQL Server 2000 закончилась почти семь лет назад (и расширенная поддержка почти два года назад). – jpw