Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбивка стобца в выводе 
V
    Опции темы
Colloseum
Дата 31.5.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 4.7.2006

Репутация: нет
Всего: нет



Даже не знаю как толком озаглавить.
Таблица следующая в MS SQL2K
-------------------------------------
DTSC1 | KTSC1 | SUM_
-------------------------------------
       6D     |           |  200
       ZD     |           |  100
                |   6D    |  300
                |   6D    |  6500
       6D     |           |  45200
                |     LP   |  45200
-------------------------------------

Мне нужно вывести такую строку:

DTSC1 | KTSC1 | SUM_DTS | SUM_KTS
       6D     |   6D    |  45400     |  6900

Т.е. необходимо вычислить все значения которым соответствует 
DTSC1 = '    6D' и вывести SUM_DTS и соответственно где KTSC1 = '    6D' в поле SUM_KTS

Следующий запрос только по одному критерию вычисляет. Как к нему прикрутить необходимую функциональность.

 
Код

SELECT     SUM(_1SENTRY.SUM_) AS AmountLeft
FROM         _1SENTRY
WHERE     (_1SENTRY.DATE_TIME_DOCID BETWEEN '20020101%' AND '20060131%') AND (_1SENTRY.DTSC1 = '    6D')


PM MAIL   Вверх
TicTak
Дата 31.5.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 2.3.2005

Репутация: 1
Всего: 1



Код

SELECT SUM (DECODE (_1SENTRY.dtsc1, '    6D', _1SENTRY.sum_, 0)) AS amountdtsc1,
       SUM (DECODE (_1SENTRY.ktsc1, '    6D', _1SENTRY.sum_, 0)) AS amountktsc1
  FROM _1SENTRY
 WHERE (_1SENTRY.date_time_docid BETWEEN '20020101%' AND '20060131%')
   AND (_1SENTRY.dtsc1 = '    6D' OR _1SENTRY.ktsc1 = '    6D')


PM   Вверх
Colloseum
Дата 31.5.2007, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 4.7.2006

Репутация: нет
Всего: нет



A DECODE() Это чего?
MS SQL Query Browser Выдает: Unrecognized function name.

Добавлено через 9 минут и 44 секунды
Немного поискал, пишут что DECODE это оракловкая функция (если я прав), в MSSQL пользуйте CASE только вот CASE вроде в Query Browser пользовать нельзя. Как быть.
PM MAIL   Вверх
TicTak
Дата 31.5.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 2.3.2005

Репутация: 1
Всего: 1



Извини, думал decode - является стандартом SQL. 
Опять же не буду уверен насчёт MS SQL, но в оракле катит следующее:
Код

SELECT SUM (CASE
               WHEN _1SENTRY.dtsc1 = '    6D'
                  THEN _1SENTRY.sum_
               ELSE 0
            END) AS amountdtsc1,
       SUM (CASE
               WHEN _1SENTRY.ktsc1 = '    6D'
                  THEN _1SENTRY.sum_
               ELSE 0
            END) AS amountktsc1
  FROM _1SENTRY                                                         
 WHERE (_1SENTRY.date_time_docid BETWEEN '20020101%' AND '20060131%')
   AND (_1SENTRY.dtsc1 = '    6D' OR _1SENTRY.ktsc1 = '    6D')

Попробуй, может поможет. Но смысл такой - выбираеш данные, которые удолетворяют параметрам в обоих столбцах, и уже при суммировании отбрасываеш ненужную сумму.
PM   Вверх
Colloseum
Дата 31.5.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 4.7.2006

Репутация: нет
Всего: нет



Респект работает как надо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.