|
|
|
СЛОЖНЫЙ ЗАПРОС!
|
|||
|---|---|---|---|
|
#18+
Ниужели никто не подскажет!!! есть таблица appointment [date] запрос должен возвращать appointment from_date till_date как бы это по красивее написать?? Пока пришло в голову только: select appointment, [date] as from_date from <table> where [date] between ( select max( [date] ) from <table> where [date] <= '1.9.2002' ) and '30.9.2002' Он возвращает занимаемые должности за указанный период но вот как получить till_date Мой вариант написать функцию, тогда будет >>> select appointment, [date] as from_date, dbo. F( [date] ) as till_date Но мне это решение не нравиться.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2002, 19:16:42 |
|
||
|
СЛОЖНЫЙ ЗАПРОС!
|
|||
|---|---|---|---|
|
#18+
Ни фига не понял :(... А по русски объяснить можно, что нужно-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2002, 19:27:29 |
|
||
|
СЛОЖНЫЙ ЗАПРОС!
|
|||
|---|---|---|---|
|
#18+
Что-то вроде такого select a.appointment, a.[date] AS from_date max(b.[date] ) AS till_date from <table> a left outer join <table> b ON b.appointment = a.appointment AND b[date] < a.[date] GROUP BY a.appointment, a.[date] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2002, 19:29:02 |
|
||
|
СЛОЖНЫЙ ЗАПРОС!
|
|||
|---|---|---|---|
|
#18+
Такое не подайдет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2002, 19:42:16 |
|
||
|
СЛОЖНЫЙ ЗАПРОС!
|
|||
|---|---|---|---|
|
#18+
>Такое не подайдет! От, теперь все ясно! Вот это точно по-русски!... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2002, 21:16:17 |
|
||
|
СЛОЖНЫЙ ЗАПРОС!
|
|||
|---|---|---|---|
|
#18+
если я правильно понял конечно.... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2002, 22:06:21 |
|
||
|
СЛОЖНЫЙ ЗАПРОС!
|
|||
|---|---|---|---|
|
#18+
Признаюсь, что сразу я тоже не понял вопрос. Из исходной таблицы состоящей из полей appointment [date] нужно сделать временную с полями appointment [date] value_day - кол-во дней сколько appointment с [date] действовал а дальше дело техники Получить все изменеия за период [a; b] select appointment, date As from_date, DateAdd(day,value_day,date) As till_date from <table> where ((date < a) and (DateAdd(day,value_day,date)>a)) or (date>a and date< b) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2002, 13:22:30 |
|
||
|
СЛОЖНЫЙ ЗАПРОС!
|
|||
|---|---|---|---|
|
#18+
set nocount on declare @a Datetime , @b datetime set @a='2000/02/01' set @b='2002/08/01' declare @tbl table (a varchar(20),d datetime) declare @tbl1 table (a varchar(20),d datetime, value_day int) insert into @tbl select 'программер','20000101' union all select 'программер','20010101' union all select 'программер','20020101' union all select 'менеджер','20000101' union all select 'менеджер','20020101' insert into @tbl1 select g.a, g.d, min(g.t ) from (select a.a, a.d, datediff(day,a.d,isnull(b.d,getdate())) As t from @tbl a left join @tbl b on a.a=b.a and a.d<b.d) As g group by g.a, g.d select * from @tbl1 order by a, d select a, d As from_date, DateAdd(day,value_day,d) As till_date from @tbl1 where ((d < @a) and (DateAdd(day,value_day,d)>@a)) OR (d>@a and d<@b) order by a, d ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2002, 14:54:30 |
|
||
|
СЛОЖНЫЙ ЗАПРОС!
|
|||
|---|---|---|---|
|
#18+
2Vasiliy Ну зачем же так сложно ?? Можно и одним запросом Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2002, 15:29:50 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32061277&tid=1819376]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 332ms |

| 0 / 0 |
