Guest User

Untitled

a guest
Apr 25th, 2012
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.15 KB | None | 0 0
  1. CREATE TABLE #patient (PatientID INT, Name VARCHAR(50));
  2.  
  3. INSERT INTO #patient (PatientID, Name)
  4. SELECT 1, 'Bob' UNION ALL
  5. SELECT 2, 'Scott' UNION ALL
  6. SELECT 3, 'Mary' UNION ALL
  7. SELECT 4, 'Sue';
  8.  
  9. CREATE TABLE #tmp (ID INT IDENTITY (1,1), PatientID INT, ActualDate DATETIME);
  10.  
  11. INSERT INTO #tmp (PatientID, ActualDate)
  12. SELECT 1, '2012-01-20' UNION ALL
  13. SELECT 1, '2012-02-20' UNION ALL
  14. SELECT 1, '2012-03-20' UNION ALL
  15. SELECT 1, '2011-04-20' UNION ALL
  16. SELECT 2, '2012-04-19' UNION ALL
  17. SELECT 2, '2012-04-20' UNION ALL
  18. SELECT 3, '2012-04-19' UNION ALL
  19. SELECT 3, '2011-04-20' UNION ALL
  20. SELECT 4, '2011-04-20';
  21.  
  22. SELECT PatientID, ActualDate FROM #tmp ORDER BY PatientID, ActualDate;
  23.  
  24. WITH CTE AS
  25. (
  26.     SELECT #patient.PatientID, #patient.Name, MAX(ActualDate) AS LastVisit
  27.     FROM #patient INNER JOIN #tmp ON #patient.PatientID = #tmp.PatientID
  28.     GROUP BY #patient.PatientID, #patient.Name
  29. )
  30. SELECT CTE.PatientID, CTE.Name, COUNT(1)-1 AS RepeatVisits
  31. FROM CTE INNER JOIN #tmp ON CTE.PatientID = #tmp.PatientID
  32. WHERE ActualDate BETWEEN DATEADD(month, -6, LastVisit) AND LastVisit
  33. GROUP BY CTE.PatientId, CTE.Name;
  34.  
  35. DROP TABLE #tmp;
  36. DROP TABLE #patient;
Advertisement
Add Comment
Please, Sign In to add comment