Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.100.42] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Страницы: (15) « Первая ... 4 5 [6] 7 8 ... 14 15 все ( Перейти к последнему сообщению ) |
Сообщ.
#76
,
|
|
|
Akina
Не подскажешь, как-то можно взять итог и подитог только по 2 столбцам? Есть такой запрос: use PJM10 declare @d1 date declare @d2 date set @d1=DATEADD(day,1,EOMONTH(GETDATE(),-2)) set @d2=DATEADD(day,1,EOMONTH(GETDATE(),-1)) SELECT isnull(QUOTENAME(Category.FileAs,'"'),'"Отсутствует"') AS Источник, QUOTENAME(Company.FileAs,'"') AS Компания, Format( sum(PaymentDetail.Value) , N'#.00', N'ru-ru') AS Сумма, isnull(QUOTENAME(Project.Comments,'"'),'""') AS Комментарий FROM PaymentDetail INNER JOIN Payment ON PaymentDetail.PaymentID = Payment.ID INNER JOIN Invoice ON PaymentDetail.InvoiceID = Invoice.ID INNER JOIN Project ON Invoice.ProjectID = Project.ID INNER JOIN Company ON Payment.PayerCompanyID = Company.ID LEFT OUTER JOIN DocumentCategory ON Project.ID = DocumentCategory.DocumentID LEFT OUTER JOIN Category ON DocumentCategory.CategoryID = Category.ID WHERE (Payment.FileAs NOT LIKE N'%-1%') AND (Payment.FileAs NOT LIKE N'%-3%') AND Payment.Date >=@d1 and Payment.Date< @d2 GROUP BY rollup(Category.FileAs,Company.FileAs,Project.Comments ) я хочу чтобы rollup был только по Category.FileAs и Company.FileAs |
Сообщ.
#77
,
|
|
|
Цитата ^D^ima @ я хочу чтобы rollup был только по Category.FileAs и Company.FileAs Используй GROUPING SETS. |
Сообщ.
#78
,
|
|
|
Получилось так:
Я поставил с скобки GROUP BY rollup (Category.FileAs,(Company.FileAs,Project.Comments)) |
Сообщ.
#79
,
|
|
|
У некоторых компаний несколько отраслей(список с множественным выбором), мне нужно найти компании у который несколько отраслей. Как это сделать?
Я подумал что можно как-то получить количество записей. возвращенных соединением, только как? Как можно узнать сколько вернуло соединение записей? Цитата ^D^ima @ LEFT OUTER JOIN |
Сообщ.
#80
,
|
|
|
Цитата ^D^ima @ У некоторых компаний несколько отраслей(список с множественным выбором) Это - отображение данных. На кое чхать с высокой колокольни. Важно, как это хранится в таблицах. Цитата ^D^ima @ Как можно узнать сколько вернуло соединение записей? Группировка и COUNT(), как обычно. |
Сообщ.
#81
,
|
|
|
Цитата Akina @ Группировка и COUNT(), как обычно. спасибо |
Сообщ.
#82
,
|
|
|
Цитата Akina @ Группировка и COUNT(), как обычно. COUNT(*) или COUNT(поле)? |
Сообщ.
#83
,
|
|
|
Нет смысла указывать поле - нам не надо отсеивать NULL-значения.
|
Сообщ.
#84
,
|
|
|
Если в таблице колонка имеет тип int, а мне нужно ее поделить и получить значение с запятой, как это организовать?
use PJM10 declare @d1 date declare @d2 date set @d1='01.01.2017' set @d2=GETDATE()+1 declare @sum float SELECT Project.FileAs as Проект, sum(@sum=TimeEntry.Duration/60) AS Сумма FROM project inner JOIN TimeEntry ON Project.ID = TimeEntry.ProjectID WHERE Project.Date >=@d1 and Project.Date< @d2 Group by Project.FileAs TimeEntry.Duration тип int. ругается на sum(@sum=TimeEntry.Duration/60) |
Сообщ.
#85
,
|
|
|
Друзья, так и не нашел ответа на вопрос.
|
Сообщ.
#86
,
|
|
|
Ну типа
SELECT Project.FileAs AS Проект, SUM(TimeEntry.Duration)/60.0 AS Сумма /* ну или там CAST(SUM(TimeEntry.Duration) AS FLOAT)/60 AS Сумма */ FROM project INNER JOIN TimeEntry ON Project.ID = TimeEntry.ProjectID WHERE Project.Date >=@d1 and Project.Date< @d2 GROUP BY Project.FileAs Цитата ^D^ima @ ругается на А процититровать ругательства? |
Сообщ.
#87
,
|
|
|
Цитата Akina @ SUM(TimeEntry.Duration)/60.0 AS Сумма Так возвращает только целые Цитата Akina @ CAST(SUM(TimeEntry.Duration) AS FLOAT)/60 AS Сумма Бинго!!! Только остался вопрос, как округлять? Цитата Akina @ А процититровать ругательства? sum(@sum=TimeEntry.Duration/60) Неправильный синтаксис около конструкции ")". ) помечена красным пунктиром |
Сообщ.
#89
,
|
|
|
Как можно упростить конструкцию? Есть 1 селект из 3 запросов, у которых Query1.Проект=Query2.Проект=Query3.Проект, но такая конструкция недопустима. Пока сделал так: where Query1.Проект=Query2.Проект and Query2.Проект=Query3.Проект Как-то можно более грамотно написать? |
Сообщ.
#90
,
|
|
|
Цитата ^D^ima @ Query1.Проект=Query2.Проект=Query3.Проект, но такая конструкция недопустима. Это почему же? вполне допустима. Просто надо понимать, ЧТО ИМЕННО будет вычислено. Цитата ^D^ima @ Как-то можно более грамотно написать? Вот как раз ЭТО - грамотно. При условии, что нет возможности сами запросы объединить... |