powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите с запросом с двумя select
25 сообщений из 74, страница 1 из 3
Помогите с запросом с двумя select
    #39158203
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть
Код: c#
1.
2.
3.
SELECT  SUM(summe) AS Expr1,
               (SELECT   SUM(summe) AS Expr2  FROM table  WHERE (MONTH(Datum) = '12') ) AS Axpr2                          
FROM  table WHERE        (MONTH(Datum) = '12')



Хочу добавить еще SUM(sumTn) AS Expr3, SUM(sumTn) AS Expr4, но не пойму куда
c Expr3 все легко, а куда надо подставить SUM(sumTn) AS Expr4 ? Чет совсем запутался..
Вроде бы напрашивается,
Код: c#
1.
2.
3.
SELECT  SUM(summe) AS Expr1,SUM(sumTn) AS Expr3, 
(SELECT   SUM(summe) AS Expr2,SUM(sumTn) AS Expr4   FROM table  WHERE (MONTH(Datum) = '12')) AS Expr2                          
FROM  table WHERE        (MONTH(Datum) = '12')


В выводе Expr4 нет. Неужели только отдельную строку добавлять?
Код: c#
1.
2.
3.
4.
SELECT  SUM(summe) AS Expr1,SUM(sumTn) AS Expr3, 
(SELECT   SUM(summe) AS Expr2  FROM table  WHERE (MONTH(Datum) = '12')) AS Expr2, 
(SELECT   SUM(sumTn) AS Expr4   FROM table  WHERE (MONTH(Datum) = '12')) AS Expr4                         
FROM  table WHERE        (MONTH(Datum) = '12')
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39158223
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это вопрос чисто по SQL, его логично было задавать в подфоруме соответствующей СУБД. Тем более, что СУБД не указана, а синтаксис может отличаться.
Для начала в самом первом запросе какая-то ерунда, поэтому непонятно вообще, что требуется получить. Зачем отбирается два раза SUM(summe) по одинаковым условиям?
Подзапрос в качестве поля выборки - это вообще хрень какая-то.
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39158906
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПодзапрос в качестве поля выборки - это вообще хрень какая-то.

нормально это
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39158923
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрень какая. Не пиши такую жесть даже если она срабатывает.
Приведи тестовый набор данных и какой результат хочешь получить.

PS По-хорошему надо спрашивать в форуме по СУБД, в которую запрос пошлешь.
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159115
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, что вчера не ответил. Метель, обрыв ЛЭПа, А лкоголь и женщины. В общем сумма всех вышеуказанных факторов помешала вернуться к компу в теч. дня для решения вопроса по другому суммированию. Также извиняюсь, если не в тот форум спросил. Ежели чего, то прошу модераторов перенести в соответствующий. Раньше вроде похожие вопросы здесь задавал. Вроде даже отвечали..
База - SQL-Server
Суть -есть таблица
id - менеджер - Стоимость - Тонны - Вид работ ------ Дата - Заказчик1 ----- Петр ------- 200 -------- 20 -----погрузка --- 20/12/2015 - SOK2 ----- Сергей ---- 300 -------- 30 -----обработка ---20/12/2015 - SOK3 ----- Петр ------- 200 -------- 20 -----погрузка --- 20/12/2015 -- DTS4 ---- - Сергей --- 300 -------- 30 -----обработка --- 20/12/2015 - DTS5 ----- Петр ------- 200 -------- 20 -----погрузка ----20/12/2015 -- GVR6 ----- Сергей ---- 300 -------- 30 -----обработка ---20/12/2015 -- GVR
....
нужна выборка сумм Стоимости и Тонн в течение месяца по разным заказчикам с разделением по видам работ.
т.е с условием WHERE (MONTH(Дата) = '{0}') AND (YEAR(Дата) = '{1}') AND (вид работ= '{2}' AND (заказчик= '{3}')
id - Expr1 - Expr2 - Expr3 - Expr41 --- 4000 - 800 ---- 7000 --- 500 //SOK

где Expr1 = Сумма стоимостей вида работ "погрузка" в текущем месяце
Expr2 = Сумма стоимостей вида работ "обработка" в текущем месяце
Expr3 = Сумма тоннажа вида работ "погрузка" в текущем месяце
Expr4 = Сумма тоннажа вида работ "обработка" в текущем месяце

далее через цикл остальные заказчики
2 - 6000 - 400 - 3000 - 300 //DTS3 - 6000 - 400 - 3000 - 300 //GVR
Виды работ фиксированные и не меняются. Кол-во заказчиков в разные месяца - разное
Вывод таблицы с Expr1 и Expr2 вроде добился. А вот добавить в нее сумму тоннажей не получается. Может изначально запрос неправильно составил
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159125
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT   Заказчик,
         [Вид работ],
         Sum(case when [Вид работ]=N'погрузка' then Стоимость else 0 end), 
         Sum(case when [Вид работ]=N'обработка' then Стоимость else 0 end), 
         Sum(case when [Вид работ]=N'погрузка' then Тонны else 0 end), 
         Sum(case when [Вид работ]=N'обработка' then Тонны else 0 end)
FROM     Table
WHERE    (MONTH(Дата) = 12) AND (YEAR(Дата) = 2015)
GROUP BY Заказчик, [Вид работ]
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159126
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, группировка по Вид работ лишняя
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT   Заказчик,
         Sum(case when [Вид работ]=N'погрузка' then Стоимость else 0 end), 
         Sum(case when [Вид работ]=N'обработка' then Стоимость else 0 end), 
         Sum(case when [Вид работ]=N'погрузка' then Тонны else 0 end), 
         Sum(case when [Вид работ]=N'обработка' then Тонны else 0 end)
FROM     Table
WHERE    (MONTH(Дата) = 12) AND (YEAR(Дата) = 2015)
GROUP BY Заказчик
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159128
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заменить
Shocker.Pro
Код: sql
1.
WHERE    (MONTH(Дата) = 12) AND (YEAR(Дата) = 2015)

на
Код: sql
1.
WHERE Дата between @From and @To
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159130
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Да, верно, я еще не совсем проснулся )))
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159131
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProАлексей К,

Да, верно, я еще не совсем проснулся )))С Добрым утром!

:-)
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159132
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КShocker.ProДа, верно, я еще не совсем проснулся )))С Добрым утром!Построитель SQL-запросов проснулся, а оптимизатор еще спит
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159153
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем. Все работает. Синтаксис для меня странный. Надо будет разбираться еще что к чему. Остался один вопрос - где указать наименования столбцов?
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159156
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
         Sum(case when [Вид работ]=N'погрузка' then Стоимость else 0 end) AS Expr1, 

но хорошим тоном все-таки считается давать вменяемые имена всему (переменным, формам, полям и т.п.). Потом сам запутаешься.
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159157
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да я уж разобрался, чет тормознул сразу. А имена другие. Я тут так для простоты изложения написал, чтобы моск никому не выносить непонятными буквами
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159160
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdm114Синтаксис для меня странный.Для меня меня странным оказался как раз синтаксис, изложенный в первом сообщении )
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159390
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нагуглил где-то..

Запустил в полную мощь - результат превзошел все мои ожидания. Еще раз респект.
Остался вопрос зачем N в [Вид работ]=N'погрузка' ? Не смог найти ответ
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159394
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какого типа у вас поле "Вид работ"?

ЗЫ: по хорошему-то оно должно быть вообще внешним ключом, впрочем как и Заказчик и Менеджер
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159397
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdm114нагуглил где-то..

Запустил в полную мощь - результат превзошел все мои ожидания. Еще раз респект.
Остался вопрос зачем N в [Вид работ]=N'погрузка' ? Не смог найти ответ
Это значит строка в юникоде.
https://msdn.microsoft.com/ru-ru/library/ms186939(v=sql.120).aspx Prefix Unicode character string constants with the letter N. Without the N prefix, the string is converted to the default code page of the database. This default code page may not recognize certain characters.
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159398
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
как раз сейчас задумался над тем, чтобы вынести в отдельную таблицу. Так - varchar

Dima T, за ссыль спасибо. Ситуация потихонечку проясняется
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39159402
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если varchar, то N можно убрать
если бы было nvarchar - N помогло бы избежать излишнего неявного преобразования строки в юникод
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39164238
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После Ваших советов пришлось переделывать много чего. Выкинул много кода. Еще раз благодарствую. Будете у нас в Нижнем -пиво с меня.
В продолжение данной темы возник вопрос. Как по фенсую делается произведение двух колонок? В клиентском коде или это можно как то в запрос запихнуть? И стоит ли это того?

У меня labels привязаны к табличке. Соответственно вслед за изменением позиции bindingsource меняются и значения. Сейчас у меня прицеплена функция к bindingsource.PositionChanged. Но гложет вопрос, может еще как то по другому можно сделать? Т.е отобразить сразу произведение в таблице и прицепить к этой колонке свой label минуя функцию?
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39164260
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при наличии SQL-сервера я стараюсь делать подобные вещи на стороне сервера - уменьшается трафик, уменьшается нагрузка на клиента, а сервер - он и нужен для того, чтобы пахать )
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39164273
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХУ то что можно делать на клиенте - лучше делать на клиенте, т.к. сервер один. Пока он молотит для одного клиента - возможно другой тупо ждет.
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39164276
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИМХУ то что можно делать на клиенте - лучше делать на клиенте, т.к. сервер один. Пока он молотит для одного клиента - возможно другой тупо ждет.Что проще, нарастить мощность одного сервера или нарастить мощность сотни клиентов?

Dima TПока он молотит для одного клиента - возможно другой тупо ждет.Либо ты плохо организовал его работу, либо сервер слаб для своих задач.
...
Рейтинг: 0 / 0
Помогите с запросом с двумя select
    #39164288
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProDima TИМХУ то что можно делать на клиенте - лучше делать на клиенте, т.к. сервер один. Пока он молотит для одного клиента - возможно другой тупо ждет.Что проще, нарастить мощность одного сервера или нарастить мощность сотни клиентов?
А как вы построили клиентский мониторинг, ну и серверный, чтобы узнать, когда и где пора что-то наращивать?
...
Рейтинг: 0 / 0
25 сообщений из 74, страница 1 из 3
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите с запросом с двумя select
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]