Advertisement
Guest User

Untitled

a guest
Apr 25th, 2012
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.10 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. WITH CTE AS
  23. (
  24.     SELECT #patient.PatientID, #patient.Name, MAX(ActualDate) AS LastVisit
  25.     FROM #patient LEFT JOIN #tmp ON #patient.PatientID = #tmp.PatientID
  26.     GROUP BY #patient.PatientID, #patient.Name
  27. )
  28. SELECT CTE.PatientID, CTE.Name, COUNT(1)-1 AS RepeatVisits
  29. FROM CTE LEFT JOIN #tmp ON CTE.PatientID = #tmp.PatientID
  30.                         AND #tmp.ActualDate BETWEEN DATEADD(month, -6, LastVisit) AND LastVisit
  31. GROUP BY CTE.PatientId, CTE.Name
  32. ORDER BY PatientID;
  33.  
  34. DROP TABLE #tmp;
  35. DROP TABLE #patient;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement