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

Откуда:
Сообщений: 3
Есть две таблицы:

Таблица 1
IdT1T1Name
1T1Name1
2T1Name2
3T1Name3

Таблица 2
IdT2IdT1T2Name
12T2Name1
23T2Name2
33T2Name3
43T2Name4


Есть простой результат соединения таблиц, получаемый с помощью JOIN:

Таблица 3 (результат исходный)
IdT1IdT2T1NameT2Name
1NULLT1Name1
21T1Name2T2Name1
32T1Name3T2Name2
33T1Name3T2Name3
34T1Name3T2Name4


Необходимо получить результат, где будет не просто перечисление из <таблицы 2> списка объектов, привязанных к <таблицы 1>, а строка с подсчётом количества этих объектов:

Таблица 3 (результат нужный)
IdT1IdT2T1NameT2Name
1NULLT1Name1
21T1Name2T2Name1
3NULLT1Name3"3 объекта"

Таблица 3 (результат нужный, вариант 2)
IdT1IdT2T1NameT2Name
1NULLT1Name1
21T1Name2T2Name1
32T1Name3"3 объекта"


Каким образом можно реализовать такую схему?
11 мар 13, 05:52    [14033333]     Ответить | Цитировать Сообщить модератору
 Re: количество строк вместо самих строк во View  [new]
Добрый Э - Эх
Guest
group by в ANSI SQL уже отменили?
11 мар 13, 06:50    [14033343]     Ответить | Цитировать Сообщить модератору
 Re: количество строк вместо самих строк во View  [new]
Eronex
Member

Откуда:
Сообщений: 3
Добрый Э - Эх
group by в ANSI SQL уже отменили?

Как условие оформить, что если более 1-го объекта, то вывести их количество; если 1 объект, то вывести его имя; если 0, то вообще ничего не выводить?
11 мар 13, 07:11    [14033355]     Ответить | Цитировать Сообщить модератору
 Re: количество строк вместо самих строк во View  [new]
Добрый Э - Эх
Guest
оператор CASE
11 мар 13, 07:16    [14033361]     Ответить | Цитировать Сообщить модератору
 Re: количество строк вместо самих строк во View  [new]
Ennor Tiegael
Member

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

А если значение T2Name1 в последнем примере будет, допустим, "2 объекта", то как вы собираетесь отличать это значение от сборной строки?
11 мар 13, 08:06    [14033398]     Ответить | Цитировать Сообщить модератору
 Re: количество строк вместо самих строк во View  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Ennor Tiegael
Eronex,

А если значение T2Name1 в последнем примере будет, допустим, "2 объекта", то как вы собираетесь отличать это значение от сборной строки?

Ну вы нашли что спросить, это же подло :)
11 мар 13, 10:18    [14033712]     Ответить | Цитировать Сообщить модератору
 Re: количество строк вместо самих строк во View  [new]
Гость333
Member

Откуда:
Сообщений: 3683
declare @t1 table (IdT1 int, T1Name varchar(100));
insert @t1 values(1, 'T1Name1');
insert @t1 values(2, 'T1Name2');
insert @t1 values(3, 'T1Name3');

declare @t2 table (IdT2 int, IdT1 int, T2Name varchar(100));
insert @t2 values(1, 2, 'T2Name1');
insert @t2 values(2, 3, 'T2Name2');
insert @t2 values(3, 3, 'T2Name3');
insert @t2 values(4, 3, 'T2Name4');

select t1.IdT1,
       case when min(t2.IdT2) = max(t2.IdT2) then min(t2.IdT2) else null end as IdT2,
       t1.T1Name,
       case
           when count(t2.IdT2) = 0
           then ''
           else
               case
                   when min(t2.IdT2) = max(t2.IdT2)
                   then min(t2.T2Name)
                   else '"' + cast(count(t2.IdT2) as varchar(30)) + ' ' +
                       case
                           when count(t2.IdT2)%100 in (11, 12, 13, 14)
                           then 'объектов'
                           when count(t2.IdT2)%10 = 1
                           then 'объект'
                           when count(t2.IdT2)%10 in (2, 3, 4)
                           then 'объекта'
                           else 'объектов'
                       end + '"'
               end
           end as T2Name
from @t1 t1
     left outer join @t2 t2 on t2.IdT1 = t1.IdT1
group by t1.IdT1, t1.T1Name;

Чтобы получить "результат нужный, вариант 2", в запросе надо заменить вторую строку на "min(t2.IdT2) as IdT2".
11 мар 13, 10:20    [14033721]     Ответить | Цитировать Сообщить модератору
 Re: количество строк вместо самих строк во View  [new]
=)8-)
Guest
Гость333, с объектами лихо вы расправились :)
11 мар 13, 10:51    [14033879]     Ответить | Цитировать Сообщить модератору
 Re: количество строк вместо самих строк во View  [new]
Eronex
Member

Откуда:
Сообщений: 3
Гость333,

Благодарю! :)
11 мар 13, 12:23    [14034585]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить