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

Откуда:
Сообщений: 5
Как можно использовать CASE после предложения GROUP BYв запросах для таблиц использующих самообъединение, например
SELECT (CASE N1 WHEN '14' THEN '06'
WHEN '12' THEN '06'
ELSE NULL END,
(select count(*) from table t2 where
t1.N1=t2.N1 and
SMP LIKE 'C%l')

FROM table t1
GROUP BY
CASE N1
WHEN '14' THEN '06'
WHEN '12' THEN '06'
ELSE NULL END

Если после GROUP BY пишу просто N1, группировку не производит,
ывводит отдельно и саму запись N1 со значением 06, и замененные отдельными строками
29 ноя 05, 15:20    [2121092]     Ответить | Цитировать Сообщить модератору
 Re: Перлы, помогите!  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

это?
SELECT
  (CASE N1
     WHEN '14' THEN '06'
     WHEN '12' THEN '06'
     ELSE NULL
  END,
count(*)
FROM table t1
  left join t2 on
    t1.N1=t2.N1 and
    SMP LIKE 'C%l'
GROUP BY
CASE N1
  WHEN '14' THEN '06'
  WHEN '12' THEN '06'
  ELSE NULL
END



Posted via ActualForum NNTP Server 1.3

29 ноя 05, 15:26    [2121147]     Ответить | Цитировать Сообщить модератору
 Re: Перлы, помогите!  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

пардон! вот так, наверное, правильнее будет:
SELECT
  (CASE N1
     WHEN '14' THEN '06'
     WHEN '12' THEN '06'
     ELSE NULL
  END,
count(t2.N1)
FROM table t1
  left join t2 on
    t1.N1=t2.N1 and
    SMP LIKE 'C%l'
GROUP BY
CASE N1
  WHEN '14' THEN '06'
  WHEN '12' THEN '06'
  ELSE NULL
END


Posted via ActualForum NNTP Server 1.3

29 ноя 05, 15:42    [2121223]     Ответить | Цитировать Сообщить модератору
 Re: Перлы, помогите!  [new]
Lebo
Member

Откуда:
Сообщений: 5
Каунтить мне надо не это поле,
после GROUP BY пишу CASEЁ ругается в вашем предложенном и в моем вариантах...
29 ноя 05, 15:48    [2121254]     Ответить | Цитировать Сообщить модератору
 Re: Перлы, помогите!  [new]
Lebo
Member

Откуда:
Сообщений: 5
Вернее, вывести мне надо дополнительно столбцов штук 10, причем для каждого столбца свои условия

А как можно построить CASE или другую какую либо функцию, которая бы меня значение одного поля в зависимости от выполнения условий для других полей

к примеру смысл такой
CASE N1 WHEN N2='01' THEN '02'
29 ноя 05, 15:52    [2121284]     Ответить | Цитировать Сообщить модератору
 Re: Перлы, помогите!  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Каунтить мне надо не это поле
хм... а какая Вам, простите, разница?
> после GROUP BY пишу CASEЁ ругается в вашем предложенном и в моем
> вариантах...
я даже догадываюсь как ругается... хотя Вы ошибку привести не соизволили.
вот так совсем правильно будет
SELECT
  CASE t1.N1
     WHEN '14' THEN '06'
     WHEN '12' THEN '06'
     ELSE NULL
  END,
count(t2.N1)
FROM table t1
  left join t2 on
    t1.N1=t2.N1 and
    t2.SMP LIKE 'C%l'
GROUP BY
CASE t1.N1
  WHEN '14' THEN '06'
  WHEN '12' THEN '06'
  ELSE NULL
END


Posted via ActualForum NNTP Server 1.3

29 ноя 05, 15:54    [2121297]     Ответить | Цитировать Сообщить модератору
 Re: Перлы, помогите!  [new]
Lebo
Member

Откуда:
Сообщений: 5
Вот текст ошибки, оцените....
MIcrosoft OLE DB Provider for SQL Server: Column 't1.N1' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
29 ноя 05, 16:02    [2121348]     Ответить | Цитировать Сообщить модератору
 Re: Перлы, помогите!  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
Lebo

Вернее, вывести мне надо дополнительно столбцов штук 10, причем для каждого
столбца свои условия

Вы бы лучше привели скрипт таблиц, пример заполнения данными и желаемый
результат... так яснее будет, что Вы получить хотите...
Lebo

А как можно построить CASE или другую какую либо функцию, которая бы меня
значение одного поля в зависимости от выполнения условий для других полей

case
  when <условие>
  then <значение>
  else ...
end
зы: BOL не пробовали читать?
29 ноя 05, 16:08    [2121403]     Ответить | Цитировать Сообщить модератору
 Re: Перлы, помогите!  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lebo
Вернее, вывести мне надо дополнительно столбцов штук 10, причем для каждого столбца свои условия

Я так понимаю, если подождать еще пару часов, то вы "созреете" до нормальной и полной постановки задачи.
А так вы меняете условия в каждом новом сообщении
29 ноя 05, 16:19    [2121490]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить