我有一個約25列的表來表示位置,我想知道是否有任何方法將此結果轉換爲更清晰的佈局?我有我的SQL線沿線的是:移調SQL結果
SELECT sum(isnull(p.[injuryFace],0)) AS [Face]
,sum(isnull(p.[InjuryHead],0)) AS [Head]
,sum(isnull(p.[InjuryEye],0)) AS [Eye]
,sum(isnull(p.[InjuryLeftFinger],0)) AS [Finger - Left]
,....
FROM tbl_OHS_IncidentsPeople P
這給了我類似
Face | Head | Eye | Finger - Left | .... |
---------------------------------------------
0 | 1 | 2 | 0 | ... |
一個結果數據集我想有到底是
Area | Count |
------------------------
Face | 0 |
Head | 2 |
Eye | 3 |
Finger - Left | 0 |
不,我看看Simple way to transpose columns and rows in Sql?這似乎有我需要,但我似乎無法理解它在我的腦海中,因爲我不想轉置整個表
任何幫助將是巨大的
乾杯 斯蒂芬
如果你的表是更加規範化,這樣的傷勢在他們自己的子表,並且基本上具有'(victimID,areaID)',這個查詢將是一個簡單的聯接/組合的事情。但是因爲你有多列,所以你被卡住了......如果你使用的是sqlserver或類似的,你可以使用「unpivot」查詢,但除此之外,你最好在客戶端代碼中進行轉換。 –
你可以做一個怪物系列的'聯合',不是嗎? 'SELECT'Face'as'Area',sum(...)As'Count'from tbl_OHS_IncidentsPeople UNION SELECT'Head'as'Area',sum(...)...'你明白了。感覺有點醜陋,我會檢查你的「解釋計劃」來考慮影響,但看起來這樣會得到你描述的結果集。 –
馬克乙是絕對正確的,'正確'的答案是正常化。不過,我的猜測是您正在使用遺留數據庫,並且您的應用程序不是唯一使用它的應用程序。他也是正確的,在客戶端這樣做幾乎肯定是最有效的。 –