Skip to content

Instantly share code, notes, and snippets.

@josejuan
Created July 3, 2012 10:07
Show Gist options
  • Select an option

  • Save josejuan/3038877 to your computer and use it in GitHub Desktop.

Select an option

Save josejuan/3038877 to your computer and use it in GitHub Desktop.
party songs
WITH Acc AS (
SELECT s70.ord,
song70Id = s70.songId,
song80Id = s80.songId,
song90Id = s90.songId,
roundTime = s70.songTime + s80.songTime + s90.songTime
FROM (SELECT ord = Row_Number() OVER(ORDER BY songTime DESC),
songId,
songTime
FROM @songList
WHERE songDecade = 70) s70
JOIN (SELECT ord = Row_Number() OVER(ORDER BY songTime DESC),
songId,
songTime
FROM @songList
WHERE songDecade = 80) s80 ON s70.ord = s80.ord
JOIN (SELECT ord = Row_Number() OVER(ORDER BY songTime DESC),
songId,
songTime
FROM @songList
WHERE songDecade = 90) s90 ON s70.ord = s90.ord
)
SELECT song70Id, song80Id, song90Id
FROM Acc a
WHERE ( SELECT SUM(roundTime)
FROM Acc
WHERE ord >= a.ord) <= @partyTime + roundTime
ORDER BY ord
-- SQL Server 2008
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment