Я использую SQL Server 2012 Express (T-SQL), и у меня есть эта таблица (AwardsPlayers) со следующими данными. Моя база данных не поддерживает MySQL. Я посмотрел здесь и здесь, но я все еще не могу понять это правильно .
Если я создам функцию, будет ли она работать в соединении с 4 таблицами, где у меня есть несколько столбцов агрегации как только один из многих столбцов в этом соединении?
playerID awardID yearID lgID notes
puckett Gold Glove 1986 AL OF
puckett Silver Slugger 1986 AL OF
puckett TSN All-Star 1986 AL OF
puckett Gold Glove 1987 AL OF
puckett Silver Slugger 1987 AL OF
puckett TSN All-Star 1987 AL OF
puckett Gold Glove 1988 AL OF
У меня есть более крупное объединение, которое я использую, но из этой таблицы я хочу иметь возможность возвращать запрос для каждого идентификатора игрока и идентификатора года, который соответствует идентификатору награды, соответствующему этому году.
Например, из приведенной выше таблицы запрос вернет следующее:
playerID yearID Awards
puckett 1986 Gold Glove, Silver Slugger, TSN All-Star
puckett 1987 Gold Glove, Silver Slugger, TSN All-Star
puckett 1988 Gold Glove
И пробел в колонке «Награды», если в этом году не будет наград.
Coalesce не работает как есть, поскольку он не должен возвращать INT, но не может работать с типом VARCHAR.
Мой текущий запрос:
--Player Stat Cards, along with Awards, Salary
select
m.namefirst,
m.namelast,
b.yearID,
b.yearID-m.birthyear as Age,
b.G,b.AB,b.R,b.H,b.[2B],b.[3B],b.HR,b.RBI,b.SB,b.BB,b.SO,left(round((b.h*1.000/b.ab),3),5) as Average
,b.IBB,b.HBP,b.SH,b.SF,b.SF,b.GIDP
, **COALESCE(a.awardID + ',' + '',0) +a.awardID**
from batting b
inner join
[master] m on b.playerID=m.playerID
inner join
AwardsPlayers a
on m.playerID=a.playerID
inner join Salaries s
on m.playerID=s.playerID
where m.playerID = 'puckett'
group by
m.namefirst,
m.namelast,
b.yearID,
b.yearID-m.birthyear,
b.G,b.AB,b.R,b.H,b.[2B],b.[3B],b.HR,b.RBI,b.SB,b.BB,b.SO,left(round((b.h*1.000/b.ab),3),5)
,b.IBB,b.HBP,b.SH,b.SF,b.SF,b.GIDP, **COALESCE(a.awardID + ',' + '',0) +a.awardID**
Заранее спасибо.
В дополнение к вкладу Ссуотера Ши ... мое выражение теперь дает это (намного лучше), однако оно возвращает ВСЕ значения, найденные в этом столбце, независимо от того, относятся ли они к этому игроку для этого идентификатора года или нет.