Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.07;
Скачать: CL | DM;

Вниз

Сложный 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
3-20922
AlexeyBl
2002-09-17 15:24
2002.10.07
Как указать гриду какая строка должна быть в нем первой?


6-21178
Xirurg
2002-08-08 03:37
2002.10.07
Как на Дельфи запустить стандартный Win 98/2000 Dial-Up ?


1-20975
DiHLoS
2002-09-26 14:01
2002.10.07
Как распечатать StringGrid?


3-20943
ivan73
2002-09-15 10:45
2002.10.07
как правильно прописать путь к БД IB по локальной сети.


1-20973
ruslan_as
2002-09-26 13:26
2002.10.07
как присвоить полю Float значение пусто