Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом  [new]
Паша СПБ
Guest
В таблице Qwerty есть 3 переменные X,Y,Z

нужно эти переменные поместить в переменные @@X @@Y @@Z

Делаю так сейчас

Set @@X = (SELECT Count(*)
FROM Qwerty With (NoLock)
WHERE [G] = 123)

Set @@Y= (SELECT Count(*)
FROM Qwerty With (NoLock)
WHERE [G] = 1233)

Set @@Z = (SELECT Count(*)
FROM Qwerty With (NoLock)
WHERE [G] = 12333)

Как поместить данные одним запросом в переменные @@X @@Y @@Z
9 окт 12, 08:58    [13288192]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Добрый Э - Эх
Guest
у тебя проблема за раз извлечь три каунта? Или проблема три каунта одним чохом сунуть в переменные?

Если что, каунты твои вот так посчитать можно за раз:
SELECT Count(case [G] when 123 then 1 end) as cnt_123,
       Count(case [G] when 1233 then 1 end) as cnt_1233,
       Count(case [G] when 12333 then 1 end) as cnt_12333
  FROM Qwerty With (NoLock) WHERE [G] in (123,1233,12333)
9 окт 12, 09:07    [13288219]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паша СПБ
Guest
Вернее будет так,я поторопился в написании примера

Set @@X = (SELECT X
FROM Qwerty With (NoLock)
WHERE [G] = 123)

Set @@Y= (SELECT Y
FROM Qwerty With (NoLock)
WHERE [G] = 123)

Set @@Z = (SELECT Z
FROM Qwerty With (NoLock)
WHERE [G] = 123)
9 окт 12, 09:11    [13288229]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паша СПБ
Guest
Одним чохом сунуть в переменные @@X, @@Y, @@Z чтобы 3 запроса не писать
9 окт 12, 09:15    [13288246]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
Добрый Э - Эх,не правильно
+

declare @t table ( id int )

insert  into @t
        ( id )
values  ( 1 )
,       ( 1 )
,       ( 1 )
,       ( 2 )
,       ( 3 )

declare @q1 int
, @q2 int
, @q3 int
select  @q1 = sum(case when id = 1 then 1
                       else 0
                  end)
      , @q2 = sum(case when id = 2 then 1
                       else 0
                  end)
      , @q3 = sum(case when id = 3 then 1
                       else 0
                  end)
from    @t
where   id in ( 1, 2, 3 )
select  @q1
      , @q2
      , @q3

select  @q1 = count(case when id = 1 then 1
                         else 0
                    end)
      , @q2 = count(case when id = 2 then 1
                         else 0
                    end)
      , @q3 = count(case when id = 3 then 1
                         else 0
                    end)
from    @t
where   id in ( 1, 2, 3 )
select  @q1
      , @q2
      , @q3


Паша СПБ а это задумка использовать @@
9 окт 12, 09:17    [13288253]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
Паша СПБ
Вернее будет так,я поторопился в написании примера

Set @@X = (SELECT X
FROM Qwerty With (NoLock)
WHERE [G] = 123)

Set @@Y= (SELECT Y
FROM Qwerty With (NoLock)
WHERE [G] = 123)

Set @@Z = (SELECT Z
FROM Qwerty With (NoLock)
WHERE [G] = 123)


select @@x = x,@@y = y,@@z =z
from Qwerty With (NoLock)
where [G] = 123
9 окт 12, 09:20    [13288263]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Добрый Э - Эх
Guest
denis2710
Добрый Э - Эх,не правильно

Неправильно считает кол-во вхождений каждого значения [G]?
9 окт 12, 09:20    [13288265]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 663
[quot denis2710]Добрый Э - Эх,не правильно/quot]

Это у вас не правильно, Э - Эх не писал "else 0". Замените "else 0" на "else NULL и получе то что нужно. Конечно при SET ANSII_NULLS ON
9 окт 12, 09:23    [13288272]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
Добрый Э - Эх, да.
Приведенный скрипт не где запустить?
9 окт 12, 09:23    [13288275]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
Guf,
автор
Это у вас не правильно
где?
Согласен про null,был неправ
9 окт 12, 09:25    [13288281]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Добрый Э - Эх
Guest
denis2710
Добрый Э - Эх, да.
Приведенный скрипт не где запустить?
мне-то его зачем запускать? Я и так вижу, что скрипт делает ровно то, что просил автор топика в своем первом посте - считает (раздельно) количество вхождение заданных элементов . Ну а то что он хотел не того, что просил, так тут я не виноват.
9 окт 12, 09:26    [13288285]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паша СПБ
Guest
denis2710 спасибо тебе и Добрый Э - Эх тоже спасибо.
Я подзабыл тупо такую конструкцию в Select.
Применяеться такое не часто просто.
9 окт 12, 09:27    [13288292]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить