Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите создать SELECT... / 6 сообщений из 6, страница 1 из 1
21.04.2006, 13:08
    #33682316
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите создать SELECT...
Имеется два курсора:
C_quart
Код: plaintext
1.
2.
3.
4.
5.
6.
Имя       Тип     Примечание
Ddate       D      Поле даты
Kod_terr    I      Код территории
Kod_indic   I      Код индикатора
Val         N      Значение
Crcode      C      Код1 территории
Varmnem     C      Код1 показателя
Q_HlpTable
Код: plaintext
1.
2.
3.
Имя       Тип     Примечание
Crcode      C      Код1 территории
Varmnem     C      Код1 показателя
Anntype     C      Тип расчета

Мне нужно составить запрос, который выбрает все значения C_quart.Val из данных C_quart за МАКСИМАЛЬНЫЕ месяца годов из поля C_quart.Ddate при связке с курсором Q_HlpTable по полям:
Код: plaintext
1.
2.
C_quart.Crcode = Q_HlpTable.Crcode AND 
C_quart.Varmnem = Q_HlpTable.Varmnem AND
Q_HlpTable.Anntype = 'Q'
Результатом д.б. курсор
C_annual_q с полями
Код: plaintext
1.
2.
3.
4.
Имя        Тип     Примечание
DYear       I      год (YYYY)
Kod_terr    I      Код территории
Kod_indic   I      Код индикатора
Val         N      Значение
...
Рейтинг: 0 / 0
21.04.2006, 13:50
    #33682543
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите создать SELECT...
Ребята, я получил результат двумя запросами (это в VFP80SP1), вот их вид:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT YEAR(C.DDate) as DYEAR, C.Kod_terr, C.Kod_Indic, MAX(YEAR(C.DDate)* 100 +MONTH(C.DDate)) as DMonth ;
  FROM C_quart C INNER JOIN Q_HlpTable Q ;
    ON C.CrCode = Q.CrCode AND C.VarMnem = Q.VarMnem AND Q.AnnType = 'Q' ;
  GROUP BY  1 , 2 , 3  ;
  INTO CURSOR C_Annual_Q0

SELECT C.Ddate, Q0.Kod_terr, Q0.Kod_indic, C.Val ;
  FROM C_Annual_Q0 Q0 INNER JOIN C_quart C ;
    ON CTOD("01."+RIGHT(STR(Q0.DMonth, 6 ), 2 )+"."+LEFT(STR(Q0.DMonth, 6 ), 4 )) = C.Ddate ;
      AND Q0.Kod_terr = C.Kod_terr ;
      AND Q0.Kod_indic = C.Kod_indic ;
  ORDER BY  1 ,  2 ,  3  ;
  INTO CURSOR C_Annual_Q
А как получить результат одним запросом???
...
Рейтинг: 0 / 0
21.04.2006, 13:51
    #33682545
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите создать SELECT...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT a.y_Data AS DYear, a.m_Data AS DMonth ;
, c.Kod_terr, c.Kod_indic, c.Val
FROM C_quart c INNER JOIN 
(select YEAR(o.Ddate) AS y_Data, MAX(MONTH(o.Ddate)) AS m_Data  FROM C_quart o GROUP BY  1  ) a
ON YEAR(с.Ddate) = a.y_Data AND MONTH(с.Ddate) = a.m_Data
INNER JOIN Q_HlpTable q ON c.Crcode = q.Crcode AND 
c.Varmnem = q.Varmnem
WHERE q.Anntype = 'Q'
ORDER BY  1 
С уважением, Алексей
P.S. Добавил в результирующий набор и максимальный месяц - мне это показалось логичным
P.P. S. Проверял на VFP 9.0
...
Рейтинг: 0 / 0
21.04.2006, 13:53
    #33682556
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите создать SELECT...
...
Рейтинг: 0 / 0
21.04.2006, 14:11
    #33682668
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите создать SELECT...
Aleksey-K в VFP80SP1 это конечно непойдет. В VFP90 действительно идет.
Огромное спасибо: Aleksey-K за то что откликнулся на такую помощь, а ВладимирМ за хорошие разъяснения.
У меня сразу вопрос: "Может перейти полностью на VFP90 ???". Но боюсь всякой непредсказуемости. Мне задачу сдавать в конце апреля.
...
Рейтинг: 0 / 0
21.04.2006, 14:17
    #33682699
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите создать SELECT...
Мы перешли и ничего не случилось :)
Вот с VFP 7.0 сложнее, а c VFP 8.0 на VFP 9.0 без проблемм.
С уважением, Алексей
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите создать SELECT... / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]