現在、数十のSELECT文を結合したスクリプトがあり、そのうち2つの例と結果の例を以下に示します。以下複数のSELECT文をPIVOTでフォーマットする
DECLARE @Age TABLE (name VARCHAR(30), total FLOAT, percentage FLOAT)
INSERT INTO @Age
SELECT '0-18', (SELECT COUNT(*) FROM tblPerson p
INNER JOIN tblClient c ON c.intPersonID = p.intPersonID
WHERE ISNULL(dbo.fncReportClient_Age(p.dteBirthdate, GETDATE()), '') >= 0 AND ISNULL(dbo.fncReportClient_Age(p.dteBirthdate, GETDATE()), '') <= 18), ''
UPDATE @Age
SET percentage = ROUND((SELECT total FROM @Age WHERE name = '0-18')/(SELECT SUM(total) FROM @Age) * 100, 2)
FROM @Age
WHERE name = '0-18'
Etc.
SELECT
g.nvhGenderName,
COUNT(*),
ROUND(COUNT(*) * 1.0/SUM(COUNT(*)) OVER() * 100, 2)
FROM
tblClient c
LEFT JOIN tblPerson p ON p.intPersonID = c.intPersonID
LEFT JOIN tblGender g ON g.intGenderID = p.intGenderID
GROUP BY g.nvhGenderName
UNION ALL
SELECT * FROM @Age
結果の例:
Name | Total | % |
---------------------------------
Male | 6514 | 60.32 |
Female | 4285 | 39.68 |
0-18 | 279 | 1.58 |
19-24 | 1748 | 9.93 |
25-34 | 5423 | 30.80 |
35-64 | 9546 | 54.21 |
65+ | 614 | 3.50 |
私が垂直とは対照的に、水平に、これらの結果を表示したいと思い、私はPIVOTでこれを行うことは可能だと思いますが、実際にそれらを使用したことがありません。私は、データが表示されるようにする方法の例を以下に示します。
Gender | Total | % | Age | Total | % |
-------------------------------------------------------------
Male | 6514 | 60.32 | 0-18 | 279 | 1.58 |
Female | 4285 | 39.68 | 19-24 | 1748 | 9.93 |
| | | 25-34 | 5423 | 30.80 |
| | | 35-64 | 9546 | 54.21 |
| | | 65+ | 614 | 3.50 |
特に、私は複数のそれを必要とする(12)SELECTステートメントを結合するためにピボットを使用するかどうかはわかりませんよ。
これをどのようにフォーマットするかについての助力は、非常に高く評価されます。
あなたが達成しようとしている何をちょうど一緒に「糊付け」しているだけで2ピボット結果セット、性別上の1つと年齢上の1つ、です。これがあなたがデータを提示する方法であると確信していますか?もしそうなら、おそらく、2つのクエリ結果をビジュアライゼーションエンジンに配信し、そこに組み合わせる方が良いでしょうか? –
SQLは "プレゼンテーション"用に設計されていません(特に "pretty prsentation")。このレポートをどのようにユーザーに配信しますか? HTMLで? PHPを使用して? (もしそうなら、PHP/HTMLでこれを使用してください) –