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

Откуда: от верблюда
Сообщений: 399
Приветствую, господа!
Есть удаленный сервер sql2000, к нему обращается sql2016 через линк.
На 2000м оконок нет, а задача такова, что нужно из группы получить только первые значения, поэтому 2000й возвращает всё, как есть, а на стороне 2016 применяется оконка и доводит результат до нужного вида.

Т.к. удаленный сервер находится в другом городе и к нему идет обращение через интернеты, хотелось бы сократить объем передаваемых данных.

Оконке для сортировки требуются дополнительные поля, которые мне в результирующем наборе не нужны. Поэтому я решил выполнить сортировку на стороне удаленного сервера, а в оконке уже не применять никакой сортировки, это позволит не передавать лишние поля. Но вот не уверен, гарантирует ли это тот же самый результат? Т.е. равнозначны ли будут результаты, если применить сортировку на удаленном сервере, а в оконке этого не делать в сравнении с запросом, где сортировка будет выполняться внутри оконки, а не на удаленном сервере. На первый взгляд кажется, что результаты идентичны, но нет ли тут подводных камней, типа как с конструкцией
select * from t1 where f1 in (select f1 from t2)
, если в t2 вдруг окажутся значения null.

+
IF EXISTS ( SELECT NULL FROM sysservers WHERE srvname = 'zLOCALSRV')
    EXEC master.dbo.sp_dropserver @server = N'zLOCALSRV', @droplogins = 'droplogins';

EXEC master.dbo.sp_addlinkedserver @server = N'zLOCALSRV', @srvproduct = N'', @provider = N'MSDASQL', @provstr = N'DRIVER={SQL Server};SERVER=localhost', @catalog = N'TempDB';
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'zLOCALSRV', @useself = N'True', @locallogin = NULL, @rmtuser = NULL, @rmtpassword = NULL;
GO
IF OBJECT_ID('tempdb.dbo.##t1', 'U') IS NOT NULL
    DROP TABLE ##t1;
CREATE TABLE ##t1
(F1   VARCHAR(100), F2   VARCHAR(100), F3   VARCHAR(100), F4   VARCHAR(100), F5   DATE, F6   VARCHAR(100), F7   VARCHAR(100));
INSERT INTO ##t1
VALUES
('01', 'Клиент1', '14903', 'Агент1', '20160101', '01', ''),
('02', 'Клиент1', '14903', 'Агент2', '20160102', '02', ''),
('03', 'Клиент1', '14903', 'Агент3', '20160203', '13', ''),
('04', 'Клиент1', '14903', 'Агент4', '20160203', '04', ''),
('05', 'Клиент1', '14903', 'Агент2', '20160203', '05', ''),
('06', 'Клиент2', '14903', 'Агент1', '20160101', '06', ''),
('07', 'Клиент2', '14903', 'Агент2', '20160101', '07', ''),
('08', 'Клиент2', '14903', 'Агент1', '20160202', '08', ''),
('09', 'Клиент2', '14903', 'Агент4', '20160202', '09', ''),
('10', 'Клиент2', '14903', 'Агент1', '20160303', '10', ''),
('11', 'Клиент3', '14903', 'Агент2', '20160505', '11', ''),
('12', 'Клиент3', '14903', 'Агент3', '20160506', '12', ''),
('13', 'Клиент3', '14903', 'Агент5', '20160506', '13', '');
GO
--вариант 1
SELECT
       *
FROM
(
    SELECT
           F1,
           F2,
           F4,
           ROW_NUMBER() OVER(PARTITION BY F5,
                                          F2 ORDER BY F3 DESC,
                                                      F2 DESC,
                                                      F5 DESC,
                                                      F7 DESC,
                                                      F6 DESC) firstv,
           F5
    FROM ##t1
) a
WHERE firstv = 1
ORDER BY F1;

--вариант 2
SELECT
       *
FROM
(
    SELECT
           F1,
           F2,
           F4,
           ROW_NUMBER() OVER(PARTITION BY F5,
                                          F2 ORDER BY (SELECT NULL)) firstv,
           F5
    FROM OPENQUERY(zlocalsrv, 'select F1,F2,F4,F5 from ##t1  order by F3 DESC, F2 DESC, F5 DESC, F7 DESC, F6 DESC')
) a
WHERE firstv = 1
ORDER BY F1;

GO
IF OBJECT_ID('tempdb.dbo.##t1', 'U') IS NOT NULL
    DROP TABLE ##t1;
GO
IF EXISTS (SELECT NULL FROM sysservers WHERE srvname = 'zLOCALSRV')
    EXEC master.dbo.sp_dropserver @server = N'zLOCALSRV', @droplogins = 'droplogins';

26 апр 17, 10:27    [20434842]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
TJ001,

без "оконке" и пронумеровать не могут уже :)
26 апр 17, 10:37    [20434887]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
aleks2
Guest
TJ001
нет ли тут подводных камней, типа как с конструкцией
select * from t1 where f1 in (select f1 from t2)
, если в t2 вдруг окажутся значения null.



1. Проблемы не в null, а в голове
select * from t1 where f1 in (select f1 from t2 where f1 is not null )


2. Сортировки сортируют одинаково. Исключение - разные коллэйшн.
26 апр 17, 10:46    [20434942]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
TJ001,

насчет exists ничего не слышали?
26 апр 17, 10:49    [20434955]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 399
aleks2
1. Проблемы не в null, а в голове
select * from t1 where f1 in (select f1 from t2 where f1 is not null )


Владислав Колосов
TJ001,
насчет exists ничего не слышали?

вот странно устроены наши люди... задаешь вопрос об одном, придираются к другому
для чего этот ответ? я специально привел пример именно в таком виде - без where f1 is not null, без экзистов, чтобы была видна ССуть, а как решать его я и сам знаю

Владислав Колосов,
вы вопрос читали? а про оффтоп слышали? меня интересует сортировка! если не можете/хотите ответить по теме, зачем вообще что-то отвечать?

aleks2
2. Сортировки сортируют одинаково. Исключение - разные коллэйшн.

Коллэйшн в моем случае не имеет значения, в реальной таблице поля типа дата и число, а char поля не содержат кириллицы, плюс ко всему коллэйшены совпадают на серверах, но это очень правильное замечание! Спасибо!
26 апр 17, 11:13    [20435041]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
TJ001
           ROW_NUMBER() OVER(PARTITION BY F5,
                                          F2 ORDER BY F3 DESC,
                                                      F2 DESC,
                                                      F5 DESC,
                                                      F7 DESC,
                                                      F6 DESC) firstv,
Потребует отсортировать набор по F5, F2, F3 DESC, F2 DESC, F5 DESC, F7 DESC, F6 DESC
А
TJ001
           ROW_NUMBER() OVER(PARTITION BY F5,
                                          F2 ORDER BY (SELECT NULL)) firstv,
по F5, F2.

Считаете это эквивалентным, даже при условии, что набор уже отсортирован по F3 DESC, F2 DESC, F5 DESC, F7 DESC, F6 DESC?
26 апр 17, 11:27    [20435091]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
Ну и пример как можно обходиться без "оконок":
declare @t table (a int, b int, c int);

insert into @t
values
 (3, 2, 2), (3, 1, 1), (1, 3, 3), (1, 4, 4);

if object_id('tempdb..#t', 'U') is not null
 drop table #t;

select
 identity(int, 1, 1) as id,
 a, b, c
into
 #t
from
 @t
order by
 a, b, c;

select
 a.a, a.b, a.c
from
 #t a join
 (select min(id) from #t group by a) b(id) on b.id = a.id;
26 апр 17, 11:52    [20435210]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 399
invm,

Согласен с вашим замечанием. Теоретически так и получается, что оконка по идее должна отсортировать по F5, F2 и как при этом лягут другие поля неизвестно, но на практике не могу пока воспроизвести...
26 апр 17, 11:58    [20435243]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 399
invm
Ну и пример как можно обходиться без "оконок"

тут тоже согласен
просто хотелось как-то уйти от промежуточных таблиц...

спасибо за ответы!
26 апр 17, 13:02    [20435614]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
rnk
Member

Откуда:
Сообщений: 126
invm
Ну и пример как можно обходиться без "оконок":
declare @t table (a int, b int, c int);

insert into @t
values
 (3, 2, 2), (3, 1, 1), (1, 3, 3), (1, 4, 4);

if object_id('tempdb..#t', 'U') is not null
 drop table #t;

select
 identity(int, 1, 1) as id,
 a, b, c
into
 #t
from
 @t
order by
 a, b, c;

select
 a.a, a.b, a.c
from
 #t a join
 (select min(id) from #t group by a) b(id) on b.id = a.id;


Можно и без временных таблиц:
declare @t table (a int, b int, c int);

insert into @t
values
 (3, 2, 2), (3, 1, 1), (1, 3, 3), (1, 4, 4);

 with t as (
 select row_number() over (order by a, b, c) as id, a, b, c from @t
 )
select
 a.a, a.b, a.c
from
 t a join
 (select min(id) from t group by a) b(id) on b.id = a.id;
26 апр 17, 13:23    [20435760]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
rnk,

и круг замкнулся...
26 апр 17, 13:29    [20435801]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
o-o
Guest
rnk
invm
Ну и пример как можно обходиться без "оконок":
declare @t table (a int, b int, c int);

insert into @t
values
 (3, 2, 2), (3, 1, 1), (1, 3, 3), (1, 4, 4);

if object_id('tempdb..#t', 'U') is not null
 drop table #t;

select
 identity(int, 1, 1) as id,
 a, b, c
into
 #t
from
 @t
order by
 a, b, c;

select
 a.a, a.b, a.c
from
 #t a join
 (select min(id) from #t group by a) b(id) on b.id = a.id;


Можно и без временных таблиц:
declare @t table (a int, b int, c int);

insert into @t
values
 (3, 2, 2), (3, 1, 1), (1, 3, 3), (1, 4, 4);

 with t as (
 select row_number() over (order by a, b, c) as id, a, b, c from @t
 )
select
 a.a, a.b, a.c
from
 t a join
 (select min(id) from t group by a) b(id) on b.id = a.id;

и 2000-ый проглотит row_number()?
весь вопрос и был, как нумеровать на 2000-ом,
без "оконке"
26 апр 17, 13:30    [20435814]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
o-o,

вот зачем вы так, получилась бы неплохая рекурсия в вопросах :)
26 апр 17, 13:36    [20435863]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
rnk
Member

Откуда:
Сообщений: 126
TaPaK,

Ступил, забыл,что там sql2000 на горизонте маячит...
26 апр 17, 13:37    [20435879]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 399
rnk, TaPaK,
да ладно, зато весело получилось ))))
26 апр 17, 14:14    [20436080]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
aleks2
Guest
o-o
весь вопрос и был, как нумеровать на 2000-ом,
без "оконке"


Там, у тредстартера, нема нужды в нумерации.
Для тупых - он ПЕРВОЕ значение берет.

Научите его писать коррелированные запросы и дело с концом.
26 апр 17, 14:25    [20436139]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 399
aleks2
Научите его писать коррелированные запросы и дело с концом.

это вы про
select f1, (select top 1 f1 from t2 where t2.f2=t1.f2) ff2 from t1 where...
?
26 апр 17, 15:03    [20436345]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
aleks2
Guest
TJ001
aleks2
Научите его писать коррелированные запросы и дело с концом.

это вы про
select f1, (select top 1 f1 from t2 where t2.f2=t1.f2) ff2 from t1 where...
?


Ниугадал

SELECT
       *
FROM
(
    SELECT
           F1,
           F2,
           F4,
           ROW_NUMBER() OVER(PARTITION BY F5,
                                          F2 ORDER BY F3 DESC,
                                                      F2 DESC,
                                                      F5 DESC,
                                                      F7 DESC,
                                                      F6 DESC) firstv,
           F5
    FROM ##t1
) a
WHERE firstv = 1

select *
  from ##t1 as t
  where  id = ( select top(1) id from ##t1 where  F5 = t. F5 order by F3 DESC, F2 DESC, F5 DESC, F7 DESC,  F6 DESC)
26 апр 17, 18:04    [20437269]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 399
aleks2,

те же яйца, только сбоку
опять все буквально понимаете
и откуда столько гонора? ЧСВ? понятно.
26 апр 17, 20:42    [20437706]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
aleks2
select *
  from ##t1 as t
  where  id = ( select top(1) id from ##t1 where  F5 = t. F5 order by F3 DESC, F2 DESC, F5 DESC, F7 DESC,  F6 DESC)
Когда наконец осознаешь, что top в кореллированном подзапросе - гарантированный NL с соответствующими последствиями?
+
use tempdb;
go

create table dbo.t (id int identity primary key, a int, b int, c int);

insert into dbo.t
select top (500000)
 rand(checksum(newid())) * 1000,
 rand(checksum(newid())) * 1000,
 rand(checksum(newid())) * 1000
from
 master.dbo.spt_values a cross join
 master.dbo.spt_values b;
go

declare @a int, @b int, @c int;

set statistics io, time on;

select
 @a = a.a, @b = a.b, @c = a.c
from
 dbo.t a join
 (select min(id) from dbo.t group by a) b(id) on b.id = a.id
option
 (maxdop 1);
/*
Таблица "t". Число просмотров 1, логических чтений 5497, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Worktable". Число просмотров 0, логических чтений 0, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

 Время работы SQL Server:
   Время ЦП = 125 мс, затраченное время = 120 мс.
*/

select
 @a = a.a, @b = a.b, @c = a.c
from
 dbo.t a
where
 a.id = (select top (1) id from dbo.t where a = a.a order by b, c)
option
 (maxdop 1);
/*
Таблица "Worktable". Число просмотров 1000, логических чтений 1466992, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "t". Число просмотров 2, логических чтений 4852, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

 Время работы SQL Server:
   Время ЦП = 2059 мс, затраченное время = 2063 мс.
*/

set statistics io, time off;

create index IX_t__a__b__c on dbo.t (a, b, c);

set statistics io, time on;

select
 @a = a.a, @b = a.b, @c = a.c
from
 dbo.t a join
 (select min(id) from dbo.t group by a) b(id) on b.id = a.id
option
 (maxdop 1);
/*
Таблица "t". Число просмотров 1, логических чтений 4444, физических чтений 0, упреждающих чтений 42, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

 Время работы SQL Server:
   Время ЦП = 94 мс, затраченное время = 97 мс.
*/

select
 @a = a.a, @b = a.b, @c = a.c
from
 dbo.t a
where
 a.id = (select top (1) id from dbo.t where a = a.a order by b, c)
option
 (maxdop 1);
/*
Таблица "Worktable". Число просмотров 0, логических чтений 0, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "t". Число просмотров 1001, логических чтений 98161, физических чтений 0, упреждающих чтений 51, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

 Время работы SQL Server:
   Время ЦП = 203 мс, затраченное время = 215 мс.
*/

set statistics io, time off;
go

drop table dbo.t;
go
26 апр 17, 21:10    [20437794]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
aleks2
Guest
invm
aleks2
select *
  from ##t1 as t
  where  id = ( select top(1) id from ##t1 where  F5 = t. F5 order by F3 DESC, F2 DESC, F5 DESC, F7 DESC,  F6 DESC)
Когда наконец осознаешь, что top в кореллированном подзапросе - гарантированный NL с соответствующими последствиями?
+
use tempdb;
go

create table dbo.t (id int identity primary key, a int, b int, c int);

insert into dbo.t
select top (500000)
 rand(checksum(newid())) * 1000,
 rand(checksum(newid())) * 1000,
 rand(checksum(newid())) * 1000
from
 master.dbo.spt_values a cross join
 master.dbo.spt_values b;
go

declare @a int, @b int, @c int;

set statistics io, time on;

select
 @a = a.a, @b = a.b, @c = a.c
from
 dbo.t a join
 (select min(id) from dbo.t group by a) b(id) on b.id = a.id
option
 (maxdop 1);
/*
Таблица "t". Число просмотров 1, логических чтений 5497, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Worktable". Число просмотров 0, логических чтений 0, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

 Время работы SQL Server:
   Время ЦП = 125 мс, затраченное время = 120 мс.
*/

select
 @a = a.a, @b = a.b, @c = a.c
from
 dbo.t a
where
 a.id = (select top (1) id from dbo.t where a = a.a order by b, c)
option
 (maxdop 1);
/*
Таблица "Worktable". Число просмотров 1000, логических чтений 1466992, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "t". Число просмотров 2, логических чтений 4852, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

 Время работы SQL Server:
   Время ЦП = 2059 мс, затраченное время = 2063 мс.
*/

set statistics io, time off;

create index IX_t__a__b__c on dbo.t (a, b, c);

set statistics io, time on;

select
 @a = a.a, @b = a.b, @c = a.c
from
 dbo.t a join
 (select min(id) from dbo.t group by a) b(id) on b.id = a.id
option
 (maxdop 1);
/*
Таблица "t". Число просмотров 1, логических чтений 4444, физических чтений 0, упреждающих чтений 42, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

 Время работы SQL Server:
   Время ЦП = 94 мс, затраченное время = 97 мс.
*/

select
 @a = a.a, @b = a.b, @c = a.c
from
 dbo.t a
where
 a.id = (select top (1) id from dbo.t where a = a.a order by b, c)
option
 (maxdop 1);
/*
Таблица "Worktable". Число просмотров 0, логических чтений 0, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "t". Число просмотров 1001, логических чтений 98161, физических чтений 0, упреждающих чтений 51, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

 Время работы SQL Server:
   Время ЦП = 203 мс, затраченное время = 215 мс.
*/

set statistics io, time off;
go

drop table dbo.t;
go


Дохтур, у поциента MS SQL 2000 и идиосинкразия на временные таблички.

ЗЫ. Ну и, во времена MS SQL 2000 так писали и... ничо нам за это не было.
27 апр 17, 06:46    [20438303]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
aleks2
Guest
TJ001
aleks2,

те же яйца, только сбоку
опять все буквально понимаете
и откуда столько гонора? ЧСВ? понятно.


Это смотря чьи яйцы.
27 апр 17, 06:49    [20438305]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
invm
Member

Откуда: Москва
Сообщений: 9114
aleks2
у поциента MS SQL 2000
И?
aleks2
ЗЫ. Ну и, во времена MS SQL 2000 так писали и... ничо нам за это не было.
Наверное некому было по рукам надавать...
27 апр 17, 11:05    [20438995]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 399
invm
Наверное некому было по рукам надавать...

Картинка с другого сайта.
27 апр 17, 11:14    [20439042]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка в оконке или сортировка в подзапросе, равнозначны ли результаты?  [new]
aleks2
Guest
invm
aleks2
у поциента MS SQL 2000
И?
aleks2
ЗЫ. Ну и, во времена MS SQL 2000 так писали и... ничо нам за это не было.
Наверное некому было по рукам надавать...


Ээээ... мальчег, чего ты смыслишь в MS SQL 2000?

ЗЫ. Ты, просто, туповат и не понимаешь, что группировка это далеко не всегда приемлемо.
27 апр 17, 11:36    [20439202]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить