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

Откуда: Пермь
Сообщений: 57
Доброго времени суток!
Как то можно ввести переменную, что бы ввести ее в начале запроса.
К примеру у меня:

select * from all_s
where сорт=1 and год=2013 and дорога=1
union all
select count(сорт),'','','','','','','','','','' from all_s
where сорт=1 and год=2013 and дорога=1
select * from all_s
where сорт=2 and год=2013 and дорога=1
union all
select count(сорт),'','','','','','','','','','' from all_s
where сорт=2 and год=2013 and дорога=1
select * from all_s
where сорт=3 and год=2013 and дорога=1
union all
select count(сорт),'','','','','','','','','','' from all_s
where сорт=3 and год=2013 and дорога=1
....

и так еще около 8 подзапросов
На ГОД и ДОРОГА хотелось бы ввести переменную.
Возможно как то это сделать?
11 сен 13, 21:50    [14828556]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить переменную  [new]
qwerty112
Guest
ArtyLyght
select * from all_s
where сорт=1 and год=2013 and дорога=1
union all
select * from all_s
where сорт=2 and год=2013 and дорога=1
union all
select * from all_s
where сорт=3 and год=2013 and дорога=1


ТС, а зачем эти три запроса ?
почему не один с условием
where сорт in (1,2,3) and год=2013 and дорога=1


ArtyLyght
...
where сорт=1 and год=2013 and дорога=1
union all
...
where сорт=2 and год=2013 and дорога=1
union all
...
where сорт=3 and год=2013 and дорога=1

тоже замое про эти 3-и запроса ... ты знаешь что такое GROUP BY ?

ArtyLyght
Как то можно ввести переменную

переменная "вводится" командой declare

зы
переменные тут, разумеется, нафик не нужны, ...
11 сен 13, 22:08    [14828596]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить переменную  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
qwerty112, там по-другому написано. Правильно читать так:
ArtyLyght
select * from all_s
where сорт=1 and год=2013 and дорога=1
union all
select count(сорт),'','','','','','','','','','' from all_s
where сорт=1 and год=2013 and дорога=1
;
select * from all_s
where сорт=2 and год=2013 and дорога=1
union all
select count(сорт),'','','','','','','','','','' from all_s
where сорт=2 and год=2013 and дорога=1
;
select * from all_s
where сорт=3 and год=2013 and дорога=1
union all
select count(сорт),'','','','','','','','','','' from all_s
where сорт=3 and год=2013 and дорога=1
;
....
и так еще около 8 подзапросов
11 сен 13, 22:31    [14828626]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить переменную  [new]
qwerty112
Guest
Cygapb-007
qwerty112, там по-другому написано. Правильно читать так:

хм, даа ... виноват ))

тогда понятно про какие "переменные" параметры ТС "глаголит"

declare @year int
declare @road int
set @year=2013
set @road=1

select * from all_s
where сорт=1 and год=@year and дорога=@road
union all
select count(сорт),'','','','','','','','','','' from all_s
where сорт=1 and год=@year and дорога=@road

....
11 сен 13, 22:51    [14828676]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить переменную  [new]
o-o
Guest
это же отчет вида:
вся таблица, выведенная по секциям типа "сорт"
+ в конце каждой секции число строк в ней.

кроме как уже в соседней теме посоветовали для этих целей репортинг юзать,
можно вообще всего двумя сканами ограничиться: вывод всей таблицы + кол-во строк в секциях
(оба раза фильтруем по год=2013 and дорога=1, хоть бы и с переменными)
для сохранения порядка строк (итог сразу после нужной секции)
пронумеровать строки в секциях, а строке с количеством присвоить номер 0

вот пример для NorthWind.
здесь в терминах таблицы ТС, сорт = CategoryID:

with cte as(
select CategoryID,
       productID,
       ROW_NUMBER() over (partition by CategoryID order by productID) as rn, 
       productName,
       QuantityPerUnit
from dbo.Products
where reorderlevel = 15

union all 

select categoryid, 
       count(*)  as cnt,
       0 as rn,
       '',
       ''
from dbo.Products
where reorderlevel = 15
group by categoryid
)

select productID,
       productName,
       QuantityPerUnit 
from cte
order by categoryid, rn desc


К сообщению приложен файл. Размер - 10Kb
12 сен 13, 19:49    [14833279]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить