我正在使用SQL Server 2012 Express(T-SQL),並且在此表中包含以下數據(AwardsPlayers)。我的數據庫不支持MySQL。我看過here和here,但我仍然無法理解。SQL Server 2012:爲單個列返回一個列中的多個字符串ID
如果我創建了一個函數,它是否可以在一個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對應於當年awardID。
例如從上面的查詢表會返回此:
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**
在此先感謝。
通過增加Sswater Shi的貢獻......我的表情現在給出了這個(好得多),但是,它返回在該列中找到的所有值,而不管它們是否是該玩家對該年份ID的特定值。
我不能猜測出你的表結構,你能張貼在這裏簡要或直接給我:[email protected] –