This query will randomly select one record from multiple categories that you specify. First the inner select partitions the record set based on a specific field, then order's it randomly by using newid(). The outer select then selects the top row from each category (aka the partioned group). The top record is always random due ordering by newid().
SELECT * FROM (
SELECT
ROW_NUMBER() OVER(PARTITION BY a.Category ORDER BY newid()) AS RowNumber,
*
FROM Table a ) b
WHERE RowNumber = 1
Friday, March 20, 2009
Thursday, March 5, 2009
SQL: More Fun with Unpivot
takes a table like:
date 0 1 2 3 4 5
3/15 a b c d e f
and converts it to
3/15 12:00am a
3/15 1:00am b
3/15 2:00am c
and so on
SELECT dateadd(hour,cast(times AS int),date), cast(times AS int), value
FROM (SELECT date, [0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23]
FROM b) AS p
UNPIVOT (value FOR times IN ([0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23]
)) AS s
date 0 1 2 3 4 5
3/15 a b c d e f
and converts it to
3/15 12:00am a
3/15 1:00am b
3/15 2:00am c
and so on
SELECT dateadd(hour,cast(times AS int),date), cast(times AS int), value
FROM (SELECT date, [0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23]
FROM b) AS p
UNPIVOT (value FOR times IN ([0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23]
)) AS s
Subscribe to:
Posts (Atom)