| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Помогите еще раз с запросом! |
| Автор: masik 31.1.2007, 12:48 | ||
| Пару дней назад спрашивала об одном запросе...теперь для меня задача усложнилась.... Есть таблица с полями: остаток_по_кредиту, дни_просрочки,Точка. Нужно выбрать сумму остатков для тех кредитов, где просрочка>1, потом те, где просрочка>30,>60 для каждой точки. Каждую сумму нужно разделить на общую сумму остатка для этой точки. Вот мой нерабочий код:
Спасибо заранее! Очень жду помощи, нужно срочно по работе! |
| Автор: IrStG 4.2.2007, 13:50 |
| select '>1',a.точка,sum(a.по_кредиту)/(select sum(b.по_кредиту) from dbo."200605" b where b.точка=a.точка group by точка) from dbo."200605" a where a.проср_дней>1 group by точка union select '>30',a.точка,sum(a.по_кредиту)/(select sum(b.по_кредиту) from dbo."200605" b where b.точка=a.точка group by точка) from dbo."200605" a where a.проср_дней>30 group by точка union select '>60',a.точка,sum(a.по_кредиту)/(select sum(b.по_кредиту) from dbo."200605" b where b.точка=a.точка group by точка) from dbo."200605" a where a.проср_дней>60 group by точка так не подойдет ? |
| Автор: masik 5.2.2007, 15:43 |
| Спасибо большое, у меня тоже были такие варианты, но просто потом мне нужно будет делать union с другим запросом...таким же, только с другой таблицы, поэтому нужно выбрать в строчку данные.... Очень жду помощи, извините за такие вопросы..... |
| Автор: AndySphinx 5.2.2007, 17:52 |
| masik посмотри вот это SELECT s_all.Точка, s1.sum_по_кредиту / s_all.sum_по_кредиту AS del1 , s30.sum_по_кредиту / s_all.sum_по_кредиту AS del30 , s60.sum_по_кредиту / s_all.sum_по_кредиту AS del60 FROM (SELECT Точка, SUM(по_кредиту) AS sum_по_кредиту FROM dbo."200605" GROUP BY Точка) s_all ,(SELECT Точка, SUM(по_кредиту) AS sum_по_кредиту FROM dbo."200605" WHERE проср_дней > 1 GROUP BY Точка) s1 ,(SELECT Точка, SUM(по_кредиту) AS sum_по_кредиту FROM dbo."200605" WHERE проср_дней > 30 GROUP BY Точка) s30 ,(SELECT Точка, SUM(по_кредиту) AS sum_по_кредиту FROM dbo."200605" WHERE проср_дней > 60 GROUP BY Точка) s60 WHERE s_all.Точка *= s1.Точка AND s_all.Точка *= s30.Точка AND s_all.Точка *= s60.Точка то что сразу будет работат, не гарантирую (писал под Oracle), но идея может поможет |
| Автор: masik 5.2.2007, 18:28 |
| AndySphinx, ОГРОМНОЕ тебе спасибо! Во-первых, все заработала с первого раза именно так, как ты написал Во-вторых, очень нужна была именно ИДЕЯ, как это делается в принципе!Опыта работы с SQL почти нет Пасибки еще раз! |
| Автор: Spectre12 28.2.2007, 10:51 |
| Спасибо большое Теперь я свой запрос сделал =) |