Форум: "Базы";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];
ВнизСложный SQL запрос с несколькими вложенными Найти похожие ветки
← →
victor_ch (2002-09-17 10:42) [0]Помогите пожалуйста с формированием SQL запроса, я что-то запарился
у меня есть одна таблица и я из нее несколькими отдельными запросами вытаскиваю данные
можно ли объединить все эти запросы в один чтобы каждый отдельный запрос выдавал данные в свое поле
запрос1
Select
SDATE, sum(BOOKCNT) "INVHOST"
from table
where
SDATE="01/01/02" and
INVHOST like "23%"
group by
SDATE
запрос2
Select
SDATE, sum(BOOKCNT) "DSHOST"
from table
where
SDATE="01/01/02" and
DSHOST like "23%"
group by
SDATE
я хочу получить в после объединения в результате что-то типа
Дата INVHOST DSHOST
01.01.2002 100 200
01.02.2002 40 10
01.03.2002 25 10
← →
Johnmen (2002-09-17 10:48) [1]А в чем проблема то ?
Select
SDATE, sum(BOOKCNT) "INVHOST", sum(BOOKCNT) "DSHOST"
from table
where
SDATE="01/01/02" and
INVHOST like "23%"
group by
SDATE
← →
victor_ch (2002-09-17 11:02) [2]нет в одном случае должно поле INVHOST like "23%"
а в другом случае DSHOST like "23%"
всего в исходной таблице 6 полей
SDATE REIS AK BOOKCNT INVHOST DSHOST
01.01.02 1001 хи 4 23РОВ
01.01.02 1002 ХИ 5 23ТАС
01.02.02 1001 ПЛ 10 23УКК
поля INVHOST,DSHOST могут содержать строку типа "23jkj" или "20klk"
только по отдельности, или оба быть пустыми
← →
Johnmen (2002-09-17 11:30) [3]Да, виноват, был невнимателен...
Копать в направлении
SELECT SDATE,SELECT SUM(),SELECT SUM()...
FROM table
WHERE ...
GROUP BY SDATE
если такой синтаксис поддерживается...
← →
victor_ch (2002-09-17 11:56) [4]да нужно что-то типа этого
вложенные запросы в select
или во from
но я перепробовал кучу вариантов не идет не один
выскакивает реплика SQL error итд
может кто подскажет поподробнее весь синтаксис
← →
Fiend (2002-09-17 12:02) [5]select sum(case when substring(invhost,1,2)="23" then bookcnt end) as "INVHOST",
sum(case when substring(dshost,1,2)="23" then bookcnt end) as "DSHOST"
from Table
where SDATE="01/01/02"
group by SDate
← →
victor_ch (2002-09-17 12:38) [6]к сожалению такой синтаксис c CASE не поддерживается
база под SYBASE надо что-то более стандартное
← →
Johnmen (2002-09-17 12:47) [7]Попробуй так...
SELECT
A.SDATE,
(SELECT SUM(B.BOOKCNT) FROM table B
WHERE (B.SDATE=A.SDATE) AND (INVHOST LIKE "23%")) "INVHOST",
(SELECT SUM(C.BOOKCNT) FROM table C
WHERE (C.SDATE=A.SDATE) AND (DSHOST LIKE "23%")) "DSHOST"
FROM table A
GROUP BY A.SDATE
← →
Fiend (2002-09-17 12:53) [8]То victor_ch
как это не поддерживается?
В MSSQL 6.5 это работает, а Сибейз и есть MSSQL6.5, тока у тя наверно уже более новая версия. Почитай мануалы. Должно работать
Можно и как Johnmem грит
← →
ЮЮ (2002-09-17 13:02) [9]>Сибейз и есть MSSQL6.5
Значит
Select * from
(Select * from Table) SubSelect
поддерживается?
← →
victor_ch (2002-09-17 13:07) [10]огромное спасибо Johnmen
вот в таком варианте работает
← →
Fiend (2002-09-17 13:08) [11]То ЮЮ
Не знаю как в Сибейз, но в MS SQL такая конструкция селекта поддерживается с 7 версии.
А вот CASE должен работать. может я где синтаксические ошибки допустил?
У меня просто есть прога, которая работала еще для MSSQL 6.5, и там в запросах повсеместно использовался CASE, именно для таких нужд.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c