Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-21310
cherepovets
2002-08-12 12:23
2002.10.07
Выключение компа


1-20983
DuXe
2002-09-26 15:36
2002.10.07
Как перевести время (системное) на 30 сек. вперёд?


1-21125
Metotrone
2002-09-24 17:54
2002.10.07
IconExclamation


4-21305
Daiz13
2002-08-20 10:09
2002.10.07
Сообщение другому приложению


3-20944
KIR
2002-09-12 02:16
2002.10.07
На что сменить ГЛЮЧНЫЙ Paradox?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский