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

Откуда:
Сообщений: 12
Доброго времени суток! Помогите пожалуйста довести до ума задачу. Нужно вывести список клиентов по которым просрочка оплаты (за услуги) через месяц либо не изменилась, либо уменьшилась, но нужно исключить нулевую просрочку у клиентов, (то есть если просрочка будет на 2016-01-01 равна 1 месяцу,а на 2016-02-01 будет равна 0,так как клиент заплатил, то в строке на 2016-02-01 ставится единица в столбце flag) . Отчетная дата - первое число каждого месяца. Я пишу такой запрос, целью которого является добавить столбец в котором единицей будут помечаться те строки, где просрочка уменьшилась или не изменилась:

select*
from(select klient_ID
,service_ID
,summa
,date
,prosrochka_month
,case
when a.prosrochka_month>=b.prosrochka_month
then 1
else 0
end 'flag'
from dbo.klient a
inner join klient b on a.klient_ID=b.klient_ID and b.date=dateadd(m,-1,a.date)
where b.prosrochka_month>0) c
where с.flag=1

данный запрос работает ПОЧТИ правильно, но на каких-то клиентах либо ставится 1 не в нужном месте, либо наоборот в нужном месте ставится 0
14 мар 16, 17:04    [18929453]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
Glory
Member

Откуда:
Сообщений: 104751
vesnushka
через месяц либо не изменилась,

А где вы храните историю оплат ?
14 мар 16, 17:13    [18929513]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
vesnushka
Member

Откуда:
Сообщений: 12
Glory,
в отдельной таблице dbo.facty_gasheniy
но я её не инерджойнила в данном запросе, потому что на основе ее и таблиц payment.fakt_klient and payment.fakt_prosrochka я создала свою табличку, где на каждую отчетную дату есть срок просрочки и сумма, и теперь на основе этой таблицы нужно вывести тех клиентов, по которым срок просрочки не увеличился
14 мар 16, 17:19    [18929575]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
Glory
Member

Откуда:
Сообщений: 104751
vesnushka
но я её не инерджойнила в данном запросе, потому что на основе ее и таблиц payment.fakt_klient and payment.fakt_prosrochka я создала свою табличку, где на каждую отчетную дату есть срок просрочки и сумма, и теперь на основе этой таблицы нужно вывести тех клиентов, по которым срок просрочки не увеличился

И сейчас вы предлагаете угадать, какие данные получились у вас в этой таблице ?
14 мар 16, 17:26    [18929642]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
vesnushka,

автор
where b.prosrochka_month>0

а если только вышел на просрочку?
14 мар 16, 17:27    [18929651]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
vesnushka
Member

Откуда:
Сообщений: 12
Glory,
данные в моей таблице верные. Я вам ничего не предлагаю. Ошибка только в этом запросе, который я написала, а именно в распределении единиц и нулей в столбце flag. Извините, если не верно изложила проблему.

К сообщению приложен файл. Размер - 8Kb
14 мар 16, 17:38    [18929733]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
vesnushka
Member

Откуда:
Сообщений: 12
vesnushka,

прошу прощения, ошибку сделала, вот верная картинка!

К сообщению приложен файл. Размер - 8Kb
14 мар 16, 17:41    [18929759]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
vesnushka
Member

Откуда:
Сообщений: 12
TaPaK,

если только вышел на просрочку, данные не учитываются)
14 мар 16, 17:42    [18929768]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
Glory
Member

Откуда:
Сообщений: 104751
vesnushka
данные в моей таблице верные. Я вам ничего не предлагаю.

Нет, вы как раз предлагаете угадать, как из неизвестной таблицы с неизвестными(не путать с неверными) данными получить нужный вам результат

vesnushka
Ошибка только в этом запросе, который я написала, а именно в распределении единиц и нулей в столбце flag. Извините, если не верно изложила проблему.

Как вы думаете, текст вашего запроса, который делает не то, что вам нужно и демонстрация результата, который для вас неверен, помогут понять, что же вам нужно ?
14 мар 16, 17:43    [18929776]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
vesnushka
Member

Откуда:
Сообщений: 12
Glory, прошу прощения, яснее изложить не могу, мозгов не хватает(
14 мар 16, 17:46    [18929799]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
vesnushka,

ладно,
если "через месяц либо не изменилась, либо уменьшилась" то почему
 a.prosrochka_month>=b.prosrochka_month
14 мар 16, 17:47    [18929808]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
vesnushka
Member

Откуда:
Сообщений: 12
TaPaK, блин, знак перепутала, когда здесь писала)
в запросе данное условие: a.prosrochka_month<=b.prosrochka_month
14 мар 16, 18:00    [18929897]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
vesnushka,

исходя из запроса и приведённых результатов, одно другому не соответсвует ну никак
14 мар 16, 18:05    [18929940]     Ответить | Цитировать Сообщить модератору
 Re: sql server 2014  [new]
Glory
Member

Откуда:
Сообщений: 104751
vesnushka
Glory, прошу прощения, яснее изложить не могу, мозгов не хватает(

Специально для этого и существует тема Рекомендации по оформлению сообщений.
14 мар 16, 21:01    [18930660]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить