Гость
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Табличные выражения / 8 сообщений из 8, страница 1 из 1
02.02.2005, 03:57
    #32895928
JNA
JNA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличные выражения
UPDATE COSTPFR SET POSTING =
(WITH
SUMPKVPFR AS
(SELECT SUM(PKVPFR.MONEYKV) AS SUMKV
FROM PLANKVPFR PKVPFR, RASH R1
WHERE PKVPFR.KODRASH = R1.KODRASH
AND R1.KODEKR = (SELECT KODEKR FROM RASH WHERE KODRASH = 1)
AND PKVPFR.KODPFR = 1
AND PKVPFR.KODKVART = 1
AND PKVPFR.ACTUAL >= 0 ),
SUMCOST AS
(SELECT SUM(C.MONEYC) AS SCKV
FROM COSTPFR C, RASH R2
WHERE C.KODRASH = R2.KODRASH
AND R2.KODEKR = (SELECT KODEKR FROM RASH WHERE KODRASH = 1)
AND C.KODPFR = 1
AND QUARTER(C.DATEOFORM) = 1)
SELECT
CASE
WHEN SCKV IS NULL THEN
CASE
WHEN 100 <= SUMKV THEN 1
ELSE 0
END
WHEN SCKV <= SUMKV THEN 1
ELSE 0
END as RESULT
FROM SUMPKVPFR, SUMCOST)
WHERE ...

Если схематично, то в данном запросе создаются 2 локальные временные таблицы,
причем без оператора update результат выдается без проблем,
а вот если добавить UPDATE COSTPFR SET POSTING = ,
то запрос не работает. В чем моя ошибка ?
DB2 8.2
...
Рейтинг: 0 / 0
02.02.2005, 05:27
    #32895943
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличные выражения
Результат заключительного select скорее всего множество записей, а не одна запись.
...
Рейтинг: 0 / 0
02.02.2005, 07:08
    #32895986
JNA
JNA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличные выражения
Нет. Возвращается одно значение.
Просто у меня такое подозрение, что либо тут надо применить другой
синтаксис, либо подобные операции не поддерживаются
...
Рейтинг: 0 / 0
02.02.2005, 14:12
    #32897095
Alexander Mozhaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличные выражения
JNAНет. Возвращается одно значение.
Просто у меня такое подозрение, что либо тут надо применить другой
синтаксис, либо подобные операции не поддерживаются

Попробуй вынести во view
...
Рейтинг: 0 / 0
02.02.2005, 18:00
    #32897827
Alexey Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличные выражения
Попробуй перефразировть запрос.
Если кратко и по сути, то:
Код: plaintext
1.
2.
UPDATE T
SET T.FIELD = (WITH Q1 AS (...) SELECT Q1.FIELD FROM Q1)
WHERE...
на
Код: plaintext
1.
2.
UPDATE T
SET T.FIELD = (SELECT Q1.FIELD FROM (SELECT ...) AS Q1(FIELD))
WHERE...
...
Рейтинг: 0 / 0
02.02.2005, 21:03
    #32898061
Lana Zapornikova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличные выражения
Если я не ошиблась, то итоговый селект

SELECT
CASE
WHEN SCKV IS NULL THEN
CASE
WHEN 100 <= SUMKV THEN 1
ELSE 0
END
WHEN SCKV <= SUMKV THEN 1
ELSE 0
END as RESULT
FROM SUMPKVPFR, SUMCOST

?

Если да, то можно попробовать

SELECT
min(
CASE
WHEN SCKV IS NULL THEN
CASE
WHEN 100 <= SUMKV THEN 1
ELSE 0
END
WHEN SCKV <= SUMKV THEN 1
ELSE 0
END as RESULT
FROM SUMPKVPFR, SUMCOST
)

Чтобы таки на этапе компиляции запроса было ясно, что это одна запись.
...
Рейтинг: 0 / 0
04.02.2005, 08:51
    #32900575
JNA
JNA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличные выражения
Спасибо, за ответы
Последний вариант не работает, т.е.

SELECT
min(
CASE ...

Пришлось действительно перефразировать запрос.
...
Рейтинг: 0 / 0
04.02.2005, 09:14
    #32900602
Alexey Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Табличные выражения
IMHO все дело в конструкции выражения
Код: plaintext
1.
2.
UPDATE T
SET T.FIELD = (WITH Q1 AS (...) SELECT Q1.FIELD FROM Q1)
WHERE...
Не проходит оно синтаксическую проверку. По крайней мере у меня на DB2 7.2 for WinNT.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Табличные выражения / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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