Author |
Topic |
legacyvbc
Starting Member
37 Posts |
Posted - 2008-03-06 : 13:55:16
|
I have several columns of integers that I would like to create an aggregate table that counts all the times an integer shows up in each column.ColA, ColB, ColC, ColD1, 3, 4, 52, 4, 4, 13, 2, 5, 66, 1, 1, 2the above would then become:id/A/B/C/D1, 1, 1, 1, 12, 1, 1, 0, 13, 1, 1, 0, 04, 0, 1, 2, 05, 0, 0, 1, 16, 1, 0, 0, 1Also, I would like to be able to select all distinct numbers from ABCD to know which numbers I need to count as I don't know what the range of numbers is going to be in columns ABCD.Any help is greatly appreciated. |
|
Lamprey
Master Smack Fu Yak Hacker
4614 Posts |
Posted - 2008-03-06 : 14:12:49
|
What have you tried so far? |
 |
|
legacyvbc
Starting Member
37 Posts |
Posted - 2008-03-06 : 14:46:36
|
I am just looping through numbers in the front end and storing the results in an array which takes too long. |
 |
|
jsmith8858
Dr. Cross Join
7423 Posts |
Posted - 2008-03-06 : 15:05:32
|
FYI -- to select all distinct numbers from all 4 columns, you write:select ColA as N from tblunionselect ColB from tblunion select ColC from tblunion select ColD from tblThe union operator automatically removes duplicates.- Jeffhttp://weblogs.sqlteam.com/JeffS |
 |
|
Lamprey
Master Smack Fu Yak Hacker
4614 Posts |
Posted - 2008-03-06 : 18:59:12
|
[code]DECLARE @Table TABLE (ColA INT, ColB INT, ColC INT, ColD INT)INSERT @TableSELECT 1, 3, 4, 5UNION ALL SELECT 2, 4, 4, 1UNION ALL SELECT 3, 2, 5, 6UNION ALL SELECT 6, 1, 1, 2SELECT ID.ID, COALESCE(A.ACount, 0) AS A, COALESCE(B.BCount, 0) AS B, COALESCE(C.CCount, 0) AS C, COALESCE(D.DCount, 0) AS D FROM ( SELECT ColA AS ID FROM @Table UNION SELECT ColB FROM @Table UNION SELECT ColC FROM @Table UNION SELECT ColD FROM @Table ) IDLEFT OUTER JOIN ( SELECT ColA, COUNT(*) AS ACount FROM @Table GROUP BY ColA ) AS A ON ID.ID = A.ColALEFT OUTER JOIN ( SELECT ColB, COUNT(*) AS BCount FROM @Table GROUP BY ColB ) AS B ON ID.ID = B.ColBLEFT OUTER JOIN ( SELECT ColC, COUNT(*) AS CCount FROM @Table GROUP BY ColC ) AS C ON ID.ID = C.ColCLEFT OUTER JOIN ( SELECT ColD, COUNT(*) AS DCount FROM @Table GROUP BY ColD ) AS D ON ID.ID = D.ColD[/code] |
 |
|
|
|
|