powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите суммировать стоблец.
4 сообщений из 4, страница 1 из 1
Помогите суммировать стоблец.
    #39890885
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, есть такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT  STD.[RepairObject], RR.[Oid] AS [RfidOid],
    STD.[ProductionStart], STD.[ProductionEnd], STD.[TaskStatus], IPR.[Amount]
	,COALESCE ( SUM (CASE WHEN IJ.[Oid] IS NULL THEN ( RF.[Status] /* * STD.[SocketsCount]*/) ELSE (0) END),(0)) AS [status]
--FROM ...
GROUP BY  STD.[RepairObject]
, RR.[Oid], STD.[ProductionStart], STD.[ProductionEnd], STD.[TaskStatus],  IPR.[Amount]



Возвращает такой результат:
RepairObject RfidOid ProductionStart ProductionEnd TaskStatus Amount statusA2027CCB-9EC3-4C56-B190-2418584C90C1 FEFA2C8C-8E84-45EE-9034-656D35C655CC 2019-11-19 07:00:00.000 2019-11-19 19:00:00.000 1 NULL 82A2027CCB-9EC3-4C56-B190-2418584C90C1 FEFA2C8C-8E84-45EE-9034-656D35C655CC 2019-11-19 07:00:00.000 2019-11-19 19:00:00.000 1 2 0A2027CCB-9EC3-4C56-B190-2418584C90C1 FEFA2C8C-8E84-45EE-9034-656D35C655CC 2019-11-19 07:00:00.000 2019-11-19 19:00:00.000 1 5 0
Теперь пытаюсь просуммировать [Amount]
Изменяю так:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT  STD.[RepairObject], RR.[Oid] AS [RfidOid],
    STD.[ProductionStart], STD.[ProductionEnd], STD.[TaskStatus], SUM(IPR.[Amount]) AS [Amount]
	,COALESCE ( SUM (CASE WHEN IJ.[Oid] IS NULL THEN ( RF.[Status] /* * STD.[SocketsCount]*/) ELSE (0) END),(0)) AS [status]
-- FROM ...
GROUP BY  STD.[RepairObject]
, RR.[Oid], STD.[ProductionStart], STD.[ProductionEnd], STD.[TaskStatus]--,  IPR.[Amount]


Получаю такой результат:
RepairObject RfidOid ProductionStart ProductionEnd TaskStatus Amount statusA2027CCB-9EC3-4C56-B190-2418584C90C1 FEFA2C8C-8E84-45EE-9034-656D35C655CC 2019-11-19 07:00:00.000 2019-11-19 19:00:00.000 1 58 82

Откуда в [Amount] 58, когда должно быть 7?

В реалиях просто хотел сумму колонки [Amount] прибавить к [Status] .
Чтобы в конечном итоге результат был таким:
RepairObject RfidOid ProductionStart ProductionEnd TaskStatus statusA2027CCB-9EC3-4C56-B190-2418584C90C1 FEFA2C8C-8E84-45EE-9034-656D35C655CC 2019-11-19 07:00:00.000 2019-11-19 19:00:00.000 1 89
...
Рейтинг: 0 / 0
Помогите суммировать стоблец.
    #39890891
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько вот так верно? Результат устраивает

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT SUM(tb1.[Amount]) + SUM(tb1.[status]) AS [status]
FROM(
SELECT IPR.[Amount]
	,COALESCE ( SUM (CASE WHEN IJ.[Oid] IS NULL THEN ( RF.[Status]  /* * STD.[SocketsCount]*/) ELSE (0) END),(0)) AS [status]
--FROM ...
GROUP BY  IPR.[Amount]
) AS tb1
...
Рейтинг: 0 / 0
Помогите суммировать стоблец.
    #39892191
L_I_IG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В первом запросе Amount участвует в группировке и то, что вы видите это не сумма. Вы видите, что у вас есть записи в которых Amount = 2 или 5 или Null. А вот во втором запросе вы видите сумму всех Amount.
...
Рейтинг: 0 / 0
Помогите суммировать стоблец.
    #39892197
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hopfen_Artur,

Замените первый запрос на такой:

Код: sql
1.
2.
3.
4.
5.
SELECT  STD.[RepairObject], RR.[Oid] AS [RfidOid],    STD.[ProductionStart], STD.[ProductionEnd], STD.[TaskStatus], 
SUM(IPR.[Amount]) OVER () AS Amount
	,COALESCE ( SUM (CASE WHEN IJ.[Oid] IS NULL THEN ( RF.[Status] /* * STD.[SocketsCount]*/) ELSE (0) END),(0)) AS [status]
FROM ...
GROUP BY  STD.[RepairObject], RR.[Oid], STD.[ProductionStart], STD.[ProductionEnd], STD.[TaskStatus]
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите суммировать стоблец.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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