Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 GROUP BY  [new]
IKT_TUT
Member

Откуда:
Сообщений: 12
Добрый день всем!

Хотел объединить все одинаковые строки (например: все строки Александр Пушкин Сергеевич хочу объединить) не смог,
помогите пожалуйста.
Заранее спасибо

ЗАПРОС:

SELECT
tbl.lastName, tbl.firstName, tbl.middleName, tbl.birthYear, tbl.Telefon, tbl.diagnoz, tbl.Address, tbl.lpu_name, tbl.GrupBlood,
tbl.id,
SUM(tbl.dose) as dose,
SUM(tbl.SZPvolume) as SZPvolume,
SUM(tbl.ERZvolume) as ERZvolume,
SUM(tbl.OTMITIvolume) as OTMITIvolume,
SUM(tbl.TMdose) as TMdose,
SUM(tbl.CNPvolume) as CNPvolume,
MONTH(tbl.ProcessEnd) as ProcessEnd,
YEAR(tbl.ProcessEnd) as GOD
FROM (
SELECT
RP.lastName, RP.firstName, RP.middleName, RP.birthYear as birthYear, RP.idNumber as Telefon, RP.comment as diagnoz, Ad.visibleName as Address,
lpu.id as id,
Cast(pr.endDate as Date) as ProcessEnd,

CASE
WHEN lpu.id in (2164530) THEN 111
WHEN lpu.id in (175156057) THEN 222
ELSE 333
END as lpu_name,

CASE WHEN A.id in (225038) THEN CCV.name END as GrupBlood,
CASE WHEN pt.id in (11450,224786,158635140) THEN 1 ELSE 0 END as dose,
CASE WHEN pt.id in (11444,238156,380903) THEN p.volume ELSE 0 END as SZPvolume,
CASE WHEN pt.id in (223671,379098,87912287,224759,224765) THEN p.volume ELSE 0 END as ERZvolume,
CASE WHEN pt.id in (224762) THEN p.volume ELSE 0 END as OTMITIvolume,
CASE WHEN pt.id in (11447,238216,158633675) THEN 1 ELSE 0 END as TMdose,
CASE WHEN pt.id in (378960,158635096) THEN p.volume ELSE 0 END as CNPvolume
FROM Conversion pr
Join Conversion_Unit pp on pp.ConversionId = pr.id
Join Unit p on p.id = pp.UnitId
Join UnitType pt on pt.id=p.UnitTypeId
Left Join Recipient RP on RP.id = pr.RecipientId
Join Customer lpu on lpu.id=pr.CustomerId
Join Address Ad on Ad.id=RP.LivingAddressId
Join AntigenValue AV on AV.RecipientId=RP.id
Join Antigen A on A.id=AV.AntigenId
Join CustomCatalogValue CCV on CCV.id=AV.CustomCatalogValueId
Where pr.ConversionRuleId in (348691,15450246,15474394)
and pr.endDate between '@sdate' and '@edate 23:59:59'
) AS tbl
WHERE tbl.GrupBlood is not null
GROUP BY tbl.lastName, tbl.firstName, tbl.middleName, tbl.birthYear, tbl.Telefon, tbl.diagnoz, tbl.Address, tbl.GrupBlood,
tbl.lpu_name,
tbl.id,
tbl.ProcessEnd

ORDER BY tbl.lpu_name
20 июл 19, 08:47    [21930809]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY  [new]
asdor
Member

Откуда: Москва
Сообщений: 484
IKT_TUT,
На вскидку в GROUP BY добавить
MONTH(tbl.ProcessEnd) as ProcessEnd,
YEAR(tbl.ProcessEnd) as GOD
20 июл 19, 09:04    [21930813]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY  [new]
IKT_TUT
Member

Откуда:
Сообщений: 12


К сообщению приложен файл. Размер - 144Kb
20 июл 19, 09:24    [21930818]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY  [new]
IKT_TUT
Member

Откуда:
Сообщений: 12
asdor,

не работает)
20 июл 19, 09:31    [21930821]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
IKT_TUT
не работает)
Ошибка "не работаю"?
Пишите про требуемые и фактические данные более подробно, ну и про ошибки.

Вообще, тут всё должно быть просто - те поля, по которым делается агрегация, указываются в GROUP BY, а остальные поля должны использоваться в SELECT в агрегатных функциях.
20 июл 19, 10:46    [21930836]     Ответить | Цитировать Сообщить модератору
 Re: GROUP BY  [new]
Massa52
Member

Откуда:
Сообщений: 379
IKT_TUT,
Попробуйте в группировке оставить только это
GROUP BY tbl.lastName, tbl.firstName, tbl.middleName
20 июл 19, 10:47    [21930837]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить