Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не стандартное форматирование результата запроса  [new]
Лукьчнчук Анатолий
Member

Откуда: Москва
Сообщений: 68
Таблицу вида
Имя Фамилия Дата
Вася Петров 2000-01-01 00:00:00.000
Петя Иванов 2000-02-02 00:00:00.000
Петя Васильев 2000-02-02 00:00:00.000
Коля Сидоров 2000-04-04 00:00:00.000
Коля Гейтс 2000-04-01 00:00:00.000


Нужно получить в виде
Имя Фамилия Дата
Вася
Петров 2000-01-01 00:00:00.000
Петя
Иванов 2000-02-02 00:00:00.000
Васильев 2000-02-02 00:00:00.000
Коля
Сидоров 2000-04-04 00:00:00.000
Гейтс 2000-04-01 00:00:00.000


Запрос для наполнения первой таблицы:
USE tempdb

IF EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'#Test1'))
BEGIN
 DROP TABLE #Test1
END

CREATE TABLE #Test1(
	Name NVARCHAR(20),
	LastName NVARCHAR(40),
	Birth DATETIME
)

INSERT INTO #Test1
SELECT 'Вася', 'Петров', CONVERT(DATETIME, '2000-01-01 00:00:00.000')
UNION ALL
SELECT 'Петя', 'Иванов', CONVERT(DATETIME, '2000-02-02 00:00:00.000')
UNION ALL
SELECT 'Петя', 'Васильев', CONVERT(DATETIME, '2000-02-02 00:00:00.000')
UNION ALL
SELECT 'Коля', 'Сидоров', CONVERT(DATETIME, '2000-04-04 00:00:00.000')
UNION ALL
SELECT 'Коля', 'Гейтс', CONVERT(DATETIME, '2000-01-04 00:00:00.000');

SELECT * FROM #Test1;

Вопрос: Как получить так отформатированную таблицу с минимальными усилиями?
25 окт 12, 16:18    [13375451]     Ответить | Цитировать Сообщить модератору
 Re: Не стандартное форматирование результата запроса  [new]
Лукьчнчук Анатолий
Member

Откуда: Москва
Сообщений: 68
select @@version
Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) Sep 21 2011 22:45:45 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)
25 окт 12, 16:23    [13375509]     Ответить | Цитировать Сообщить модератору
 Re: Не стандартное форматирование результата запроса  [new]
nezhadnye_my
Guest
в качестве изврата
with cte1 as(
SELECT '' as Name1, Name, LastName, convert(char(23), Birth, 121 ) as Birth, 
       rank() over (order by Name) as r
FROM #Test1),

cte2 as (
select distinct Name as Name1, '' as Name, '' as LastName, '' as Birth,
       rank() over (order by Name) as r
from #Test1),

cte3 as(
select *
from cte1
union all
select *
from cte2)

select Name1, LastName, Birth 
from cte3
order by r, Name
25 окт 12, 16:55    [13375797]     Ответить | Цитировать Сообщить модератору
 Re: Не стандартное форматирование результата запроса  [new]
Лукьчнчук Анатолий
Member

Откуда: Москва
Сообщений: 68
Спасибо. Помогло.
26 окт 12, 11:07    [13378864]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить