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

Откуда:
Сообщений: 4
помогите пожалуйста!
в вывод таблицы надо добавить 2 столбца - все возможные режимы потребления и количество абонентов на каждом из них
вот скрипт:

declare @Дата datetime set @Дата = '20120101';

IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id = OBJECT_ID('tempdb..#Показания_Счетчика') ) DROP TABLE #Показания_Счетчика;

select
T.СчетчикУИД,
T.Дата,
Значение
into #Показания_Счетчика
from
	(
	SELECT
	[СчетчикУИД], max([Дата]) Дата
	FROM [ab].[dbo].[ПоказанияСчетчиков]
	where Дата < @Дата
	group by [СчетчикУИД]
	) as T
left join [ab].[dbo].[ПоказанияСчетчиков] _п on _п.СчетчикУИД = T.СчетчикУИД and _п.Дата = T.Дата
order by СчетчикУИД

select
ЛицевойСчет,
_СРП.РежимПотребленияНаименование,
case when Действует = 0x00 then '0' when Действует = 0x01 then '1' else '' end Действует,
case when _СЧ.УИД IS NULL then '' else _СЧ.УИД end СчетчикКод,
case when _пс.Значение IS NULL then '0' else _пс.Значение end Показания
from
	(
	select 
	ЛицевойСчет,
	РежимПотребленияУИД,
	Действует,
	Счетчик
	from [ab].[dbo].[Абоненты]join
		(
		select
		T.АбонентУИД,
		T.РежимПотребленияУИД,
		Действует,
		case when _рп.Счетчик = '' OR _рп.Счетчик IS NULL then _рп.ГрупповойСчетчик else _рп.Счетчик end Счетчик
		from
			(
			SELECT 
			АбонентУИД,
			max(Дата) Дата,
			РежимПотребленияУИД
			FROM [ab].[dbo].[ИсторияИзмененияРежимовПотребленияАбонентов] _рп
			where Дата < @Дата
			group by АбонентУИД, РежимПотребленияУИД
			) as T
		join [ab].[dbo].[ИсторияИзмененияРежимовПотребленияАбонентов] _рп
		on _рп.АбонентУИД = T.АбонентУИД and _рп.Дата = T.Дата and _рп.РежимПотребленияУИД = T.РежимПотребленияУИД
		) as R
	on.УИД = R.АбонентУИД
	) as S
left join [ab].[dbo].[СоответствиеРежимовПотребленияАбонентов] _СРП on _СРП.РежимПотребленияУИД = S.РежимПотребленияУИД
left join [ab].[dbo].[Счетчики] _СЧ on _СЧ.УИД = S.Счетчик
left join #Показания_Счетчика _пс on _пс.СчетчикУИД = S.Счетчик
where Действует <> 0x00
order by ЛицевойСчет,РежимПотребленияНаименование


Сообщение было отредактировано: 9 мар 12, 22:57
9 мар 12, 20:12    [12218509]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от чайника по составлению скрипта  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Абстрагируйся. Сделай таблички A, B, C с полями F1, F2, F3 и переформулируй задачу для общего вида. Тогда даже самому станет понятно чего ты хочешь.
10 мар 12, 00:37    [12219563]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от чайника по составлению скрипта  [new]
Liox
Member

Откуда:
Сообщений: 4
Спасибо за подсказку. Сейчас переформулирую
Есть 6 таблиц:
1) Города - УникальныйНомер, Наименование
2) Жители - УникальныйНомер, Наименование, ЛицевойСчет, ДатаОткрытияЛС, ПодразделениеУникальныйНомер
3) Взаиморасчеты - Дата, ЖительУникальныйНомер, УслугаЖителюУникальныйНомер,ПериодРасчета, ПризнакОплатаНачисление, Сумма, КодОперации, ДатаДокумента, НомерДокумента
4) ВзаиморасчетыНачальноеСальдо - ЖительУникальныйНомер, УслугаУникальныйНомер, ПериодРасчета, ПризнакДолгАванс, Сумма
5) ИсторияИзмененияУслугЖителям - Дата, ЖительУникальныйНомер, УслугаУникальныйНомер, Дейтвует, Счетчик, ГрупповойСчетчик,
ДатаДокумента, НомерДокумента, УчетныйМесяц
6) СоответствиеУслугЖителям - УслугаУникальныйНомер, УслугаНаименование

Нужно составить запрос на выборку -
1)сальдо жителей по услугам (суммарное)
2)количество жителей
3)выяснить какие услуги существуют
4)сколько по каждому городу количество жителей
5)какой услугой и сколько жителей пользуются

Помогите пожалуйста составить запрос на выборку из этих таблиц.
10 мар 12, 18:55    [12221580]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от чайника по составлению скрипта  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Liox
Нужно составить запрос на выборку -
1)сальдо жителей по услугам (суммарное)
2)количество жителей
3)выяснить какие услуги существуют
4)сколько по каждому городу количество жителей
5)какой услугой и сколько жителей пользуются

Помогите пожалуйста составить запрос на выборку из этих таблиц.

А вы уверены что это должен быть 1 запрос, а не 5?
13 мар 12, 00:14    [12235755]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить