我有以下數據,我想透視並根據透視結果得到數字。T-SQL數據透視表數據透視結果
DECLARE @tempMusicSchoolStudent TABLE
(school VARCHAR(50),
studentname VARCHAR(50),
instrumentname VARCHAR(255),
expertise INT)
INSERT INTO @tempMusicSchoolStudent(school, studentname, instrumentname, expertise)
SELECT 'Foster','Matt','Guitar','10'
UNION
SELECT 'Foster','Jimmy','Guitar','5'
UNION
SELECT 'Foster','Jimmy','Keyboard','8'
UNION
SELECT 'Foster','Ryan','Keyboard','9'
UNION
SELECT 'Midlothean','Kyle','Keyboard','10'
UNION
SELECT 'Midlothean','Mary','Guitar','4'
UNION
SELECT 'Midlothean','Mary','Keyboard','7'
原始數據:
我想結果看起來像下面的數據....
我用得到這個數據下面的sql查詢。這個查詢的問題是我有一個動態數量的工具(爲了簡單起見,我在這個例子中只顯示了2個)。我想使用數據透視表,因爲它會更乾淨的動態SQL。否則,我必須動態地將每個樂器的表格自動加入到自己的表格中。
SELECT
t.school, t.instrumentname, t.expertise,
t1.instrumentname, t1.expertise,
COUNT(DISTINCT t.studentname) [DistinctStudentCount]
FROM
@tempMusicSchoolStudent t
LEFT JOIN
@tempMusicSchoolStudent t1 ON t1.school = t.school
AND t1.studentname = t.studentname
AND t.instrumentname <> t1.instrumentname
GROUP BY
t.school, t.instrumentname, t.expertise, t1.instrumentname, t1.expertise
ORDER BY
t.school, t.instrumentname, t.expertise, t1.instrumentname, t1.expertise
如果有人不是動態左側的接合部表到它本身將不勝感激我如何能在一個更清潔的方式做到這一點的任何想法。謝謝。
你的輸出中row1和row3有什麼不同? – p2k
這裏沒有區別,但它是數據的預期模式。如果我可以刪除那些很棒的重複,但現在用戶可以很好地完成這些工作,因爲他們希望完全連接數據。 – mgmedick