Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с полным внешним объединением !
|
|||
|---|---|---|---|
|
#18+
MSSQL 7.0. Есть две таблицы:1)ID потребителя,Год,Месяц,начислено 2) ID потребителя,Год,Месяц,оплачено. Надо сделать выборку - по потребителю в каждом месяце начисление и оплата. Я делаю полное внешнее объединение по ID потребителя,Год,Месяц,но в случае нескольких начислений в месяце он выдает: ID потребителя,Год,Месяц,начислено1 ID потребителя,Год,Месяц,оплачено1 ID потребителя,Год,Месяц,начислено2 ID потребителя,Год,Месяц,оплачено1 Как получить: ID потребителя,Год,Месяц,начислено1 ID потребителя,Год,Месяц,оплачено1 ID потребителя,Год,Месяц,начислено2 NULL NULLNULL NULL Я додумался - надо дополнительно нумеровать записи по каждому периоду - но как это сделать ? Может быть еще способы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2001, 06:40 |
|
||
|
Помогите с полным внешним объединением !
|
|||
|---|---|---|---|
|
#18+
SELECT [ID потребителя],[Год], [Месяц], SUM([начислено]), SUM([оплачено]) FROM (SELECT [ID потребителя],[Год], [Месяц], [начислено], 0 AS [оплачено] FROM table1 UNION ALL SELECT [ID потребителя],[Год], [Месяц], 0 AS [начислено], [оплачено] FROM table2 ) AS a GROUP BY [ID потребителя],[Год], [Месяц] ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2001, 07:19 |
|
||
|
Помогите с полным внешним объединением !
|
|||
|---|---|---|---|
|
#18+
Судя по всему, Вам, Сергей не хочется применять агрегатные функции, то есть хочется иметь список сумм внутри одного месяца, а не результирующую сумму за весь месяц целиком. В этом случае действительно не обойтись без дополнительной нумерации. Вот пример: --СОЗДАНИЕ ТАБЛИЦ create table #nach(id int identity(1,1),idpotr int not null, year int not null, month int not null, summa money not null, extid int null) create table #opl(id int identity(1,1),idpotr int not null, year int not null, month int not null, summa money not null, extid int null) --ЗАПОЛНЕНИЕ ТАБЛИЦ insert into #nach(idpotr,year,month,summa) values(1,2000,1,1000.00) insert into #nach(idpotr,year,month,summa) values(1,2000,1,1200.00) insert into #nach(idpotr,year,month,summa) values(1,2000,1,1500.00) insert into #nach(idpotr,year,month,summa) values(2,2000,1,3000.00) insert into #nach(idpotr,year,month,summa) values(2,2000,1,5000.00) insert into #opl(idpotr,year,month,summa) values(1,2000,1,5000.00) insert into #opl(idpotr,year,month,summa) values(1,2000,2,1000.00) insert into #opl(idpotr,year,month,summa) values(1,2000,2,2000.00) insert into #opl(idpotr,year,month,summa) values(2,2000,1,1000.00) insert into #opl(idpotr,year,month,summa) values(2,2000,1,2000.00) insert into #opl(idpotr,year,month,summa) values(2,2000,1,5000.00) insert into #opl(idpotr,year,month,summa) values(2,2000,2,7000.00) --НУМЕРОВАНИЕ ЗАПИСЕЙ В ПЕРИОДЕ UPDATE n Set extid=(Select Count(*) from #nach nn where n.idpotr=nn.idpotr and n.year=nn.year and n.month=nn.month and n.id>=nn.id) From #nach n UPDATE o Set extid=(Select Count(*) from #opl oo where o.idpotr=oo.idpotr and o.year=oo.year and o.month=oo.month and o.id>=oo.id) From #opl o --Select * from #nach --Select * from #opl --РЕЗУЛЬТИРУЮЩИЙ SELECT Select ISNULL(n.idpotr,o.idpotr) As [Потребитель], ISNULL(n.year,o.year) As [Год], ISNULL(n.month,o.month) As [Месяц], n.summa As [Начислено], /*можно использовать IsNull для выведения вместо NULL нулей*/ o.summa As [Оплачено] /*можно использовать IsNull для выведения вместо NULL нулей*/ From #nach n FULL OUTER JOIN #opl o ON n.idpotr=o.idpotr and n.year=o.year and n.month=o.month and n.extid=o.extid ORDER BY ISNULL(n.idpotr,o.idpotr), ISNULL(n.year,o.year), ISNULL(n.month,o.month) drop table #nach drop table #opl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2001, 08:11 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32018675&tid=1824681]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 381ms |

| 0 / 0 |
