home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / dbms_mag / 9107 / sql_sibs < prev    next >
Text File  |  1991-06-14  |  9KB  |  297 lines

  1. SQL SIBLINGS, DBMS, JULY 1991
  2. *****************************Listings***************************
  3.  
  4. Listing 1
  5.  
  6. SQL> SELECT Pat.PatNo, Pat.PatName, COUNT(*) "BACK OPER"
  7.      2  FROM Pat, Proc
  8.      3  WHERE Pat.PatNo = Proc.PatNo
  9.      4  AND Proc.Proc = 'BACK'
  10.      5  GROUP BY Pat.PatNo, Pat.PatName
  11.      6  HAVING COUNT(*) > 1;
  12.  
  13.      PAT PATNAME       BACK OPER
  14.      --- ------------ ----------
  15.      001 John Brown            2
  16.  
  17.  
  18. Listing 2.
  19.  
  20. SQL> SELECT Pat.PatNo, Pat.PatName, MIN(Rx.RxDate) FIRST,
  21.             MAX(Rx.RxDate) LAST
  22.      2  FROM Pat, Rx
  23.      3  WHERE Pat.PatNo = Rx.PatNo
  24.      4    AND Rx.MedName = 'PROPOX'
  25.      5  GROUP BY Pat.PatNo, Pat.PatName
  26.      6  HAVING '01-JAN-89' <= MIN(Rx.RxDate)
  27.      7   AND MAX(Rx.RxDate) <= '31-DEC-89';
  28.  
  29.      PAT PATNAME      FIRST     LAST     
  30.      --- ------------ --------- ---------
  31.      003 Jim Green    30-JAN-89 06-DEC-89 
  32.  
  33.  
  34. Listing 3.
  35.  
  36. SQL> SELECT Pat.PatNo, Pat.PatName, Proc.ProcDate
  37.      2  FROM Pat, Proc
  38.      3  WHERE Pat.PatNo = Proc.PatNo
  39.      4    AND Proc.Proc = 'BACK';
  40.  
  41.      PAT PATNAME      PROCDATE 
  42.      --- ------------ ---------
  43.      001 John Brown   06-JUL-89
  44.      001 John Brown   30-AUG-90
  45.      002 Mary White   23-SEP-90
  46.  
  47.  
  48. SQL> SELECT Pat.PatNo, Pat.PatName, Rx.RxDate
  49.      2  FROM Pat, Rx
  50.      3  WHERE Pat.PatNo = Rx.PatNo
  51.      4    AND Rx.MedName = 'PROPOX';
  52.  
  53.      PAT PATNAME      RXDATE   
  54.      --- ------------ ---------
  55.      001 John Brown   12-FEB-87
  56.      001 John Brown   02-MAR-89
  57.      003 Jim Green    30-JAN-89
  58.      003 Jim Green    06-DEC-89
  59.  
  60.  
  61. Listing 4.
  62.  
  63. SQL> SELECT Pat.PatNo, Pat.PatName, Proc.ProcDate, Rx.RxDate
  64.      2  FROM Pat, Proc, Rx
  65.      3  WHERE Pat.PatNo = Proc.PatNo
  66.      4    AND Proc.Proc = 'BACK'
  67.      5    AND Pat.PatNo = Rx.PatNo
  68.      6    AND Rx.MedName = 'PROPOX';
  69.  
  70.      PAT PATNAME      PROCDATE  RXDATE   
  71.      --- ------------ --------- ---------
  72.      001 John Brown   06-JUL-89 12-FEB-87
  73.      001 John Brown   30-AUG-90 12-FEB-87
  74.      001 John Brown   06-JUL-89 02-MAR-89
  75.      001 John Brown   30-AUG-90 02-MAR-89
  76.  
  77.  
  78.  
  79. Listing 5.
  80.            
  81. SQL> SELECT Pat.PatNo, Proc.PatNo, Proc.Proc, Proc.ProcDate,
  82.      2                Rx.PatNo, Rx.MedName, Rx.RxDate
  83.      3  FROM Pat, Proc, Rx
  84.      4  WHERE Pat.PatNo = Proc.PatNo
  85.      5    AND Pat.PatNo = Rx.PatNo;
  86.  
  87.      PAT PAT PROC   PROCDATE  PAT MEDNAME RXDATE
  88.      --- --- ------ --------- --- -------- ---------
  89.      001 001 BACK   06-JUL-89 001 PROPOX   12-FEB-87
  90.      001 001 KNEE   14-DEC-89 001 PROPOX   12-FEB-87
  91.      001 001 BACK   30-AUG-90 001 PROPOX   12-FEB-87
  92.      001 001 BACK   06-JUL-89 001 PROPOX   02-MAR-89
  93.      001 001 KNEE   14-DEC-89 001 PROPOX   02-MAR-89
  94.      001 001 BACK   30-AUG-90 001 PROPOX   02-MAR-89
  95.      002 002 BACK   23-SEP-90 002 ACETA    09-APR-90
  96.      002 002 BACK   23-SEP-90 002 ACETA    12-JAN-91
  97.  
  98.  
  99. Listing 6. 
  100.  
  101. SQL> SELECT Pat.PatNo, Pat.PatName
  102.      2  FROM Pat, Proc
  103.      3  WHERE Pat.PatNo = Proc.PatNo
  104.      4    AND Proc.Proc = 'BACK'
  105.      5  GROUP BY Pat.PatNo, Pat.PatName
  106.      6        INTERSECT
  107.      7  SELECT Pat.PatNo, Pat.PatName
  108.      8  FROM Pat, Rx
  109.      9  WHERE Pat.PatNo = Rx.PatNo
  110.     10    AND Rx.MedName = 'PROPOX'
  111.     11  GROUP BY Pat.PatNo, Pat.PatName;
  112.  
  113.     PAT PATNAME     
  114.     --- ------------
  115.     001 John Brown  
  116.  
  117.  
  118.  
  119. Listing 7
  120.  
  121. SQL> SELECT Pat.PatNo, Pat.PatName, 'Back operation(s)' Encounter
  122.  
  123.      2  FROM Pat, Proc
  124.      3  WHERE Pat.PatNo = Proc.PatNo
  125.      4    AND Proc.Proc = 'BACK'
  126.      5  GROUP BY Pat.PatNo, Pat.PatName
  127.      6        UNION
  128.      7  SELECT Pat.PatNo, Pat.PatName, 'Propox prescription(s)'
  129.      8  FROM Pat, Rx
  130.      9  WHERE Pat.PatNo = Rx.PatNo
  131.     10    AND Rx.MedName = 'PROPOX'
  132.     11  GROUP BY Pat.PatNo, Pat.PatName;
  133.  
  134.     PAT PATNAME      ENCOUNTER             
  135.     --- ------------ ----------------------
  136.     001 John Brown   Back operation(s)     
  137.     001 John Brown   Propox prescription(s)
  138.     002 Mary White   Back operation(s)     
  139.     003 Jim Green    Propox prescription(s)
  140.  
  141.  
  142. Listing 8
  143.        
  144. SQL> SELECT Pat.PatNo, Pat.PatName, 'Back operation(s)' Encounter,
  145.      2       SUM(Proc.Cost) Cost
  146.      3  FROM Pat, Proc
  147.      4  WHERE Pat.PatNo = Proc.PatNo
  148.      5    AND Proc.Proc = 'BACK'
  149.      6  GROUP BY Pat.PatNo, Pat.PatName
  150.      7        UNION
  151.      8  SELECT Pat.PatNo, Pat.PatName, 'Propox prescription(s)',
  152.      9       SUM(Rx.Cost)
  153.     10  FROM Pat, Rx
  154.     11  WHERE Pat.PatNo = Rx.PatNo
  155.     12    AND Rx.MedName = 'PROPOX'
  156.     13  GROUP BY Pat.PatNo, Pat.PatName;
  157.  
  158.     PAT PATNAME      ENCOUNTER                      COST
  159.     --- ------------ ---------------------- ------------
  160.     001 John Brown   Back operation(s)         $9,200.00
  161.     001 John Brown   Propox prescription(s)      $105.00
  162.     002 Mary White   Back operation(s)         $5,200.00
  163.     003 Jim Green    Propox prescription(s)       $95.00
  164.  
  165.  
  166. Listing 9.
  167.  
  168. SQL> CREATE VIEW ProcSum (PatNo, PatName, Cost)
  169.      2    AS
  170.      3  SELECT Pat.PatNo, Pat.PatName, SUM(Proc.Cost)
  171.      4  FROM Pat, Proc
  172.      5  WHERE Pat.PatNo = Proc.PatNo
  173.      6    AND Proc.Proc = 'BACK'
  174.      7  GROUP BY Pat.PatNo, Pat.PatName;
  175.  
  176.      iew created.
  177.  
  178. SQL> SELECT S.PatNo, S.PatName, S.Cost "PROC COST",
  179.         SUM(Rx.Cost) "RX COST"
  180.      2  FROM ProcSum S, Rx
  181.      3  WHERE S.PatNo = Rx.PatNo
  182.      4    AND Rx.MedName = 'PROPOX'
  183.      5  GROUP BY S.PatNo, S.PatName, S.Cost;
  184.  
  185.      PAT PATNAME         PROC COST      RX COST
  186.      --- ------------ ------------ ------------
  187.      001 John Brown      $9,200.00      $105.00
  188.  
  189.  
  190. Listing 10
  191.  
  192. SQL> CREATE VIEW ProcSum (PatNo, PatName, Proc, Cost)
  193.      2    AS 
  194.      3  SELECT Pat.PatNo, Pat.PatName, MAX(Proc.Proc),
  195.            SUM(Proc.Cost) 
  196.      4  FROM Pat, Proc 
  197.      5  WHERE Pat.PatNo     = Proc.PatNo (+) 
  198.      6    AND Proc.Proc (+) = 'BACK' 
  199.      7  GROUP BY Pat.PatNo, Pat.PatName; 
  200.                
  201.      View created. 
  202.                
  203. SQL> SELECT S.PatNo, S.PatName, S.Cost "PROC COST",
  204.        SUM(Rx.Cost) "RX COST" 
  205.      2  FROM ProcSum S, Rx 
  206.      3  WHERE S.PatNo = Rx.PatNo (+) 
  207.      4    AND (S.Proc IS NOT NULL OR Rx.MedName = 'PROPOX')
  208.      5  GROUP BY S.PatNo, S.PatName, S.Cost; 
  209.                
  210.      PAT PATNAME         PROC COST      RX COST
  211.      --- ------------ ------------ ------------
  212.      001 John Brown      $9,200.00      $105.00
  213.      002 Mary White      $5,200.00       $70.00
  214.      003 Jim Green                       $95.00
  215.             
  216.  
  217. Listing 11
  218.  
  219. SQL> CREATE VIEW ProcSum (PatNo, PatName, FirstProc,
  220.                  LastProc)
  221.      2    AS
  222.      3  SELECT Pat.PatNo, Pat.PatName, MIN(Proc.ProcDate),
  223.            MAX(Proc.ProcDate)
  224.      4  FROM Pat, Proc
  225.      5  WHERE Pat.PatNo = Proc.PatNo
  226.      6    AND Proc.Proc = 'BACK'
  227.      7  GROUP BY Pat.PatNo, Pat.PatName;
  228.  
  229.      View created.
  230.  
  231.                
  232. SQL> SELECT S.PatNo, S.PatName, S.FirstProc, S.LastProc,
  233.      2       MIN(Rx.RxDate) "FIRST RX", MAX(Rx.RxDate) "LAST RX"
  234.      3  FROM ProcSum S, Rx
  235.      4  WHERE S.PatNo = Rx.PatNo
  236.      5  HAVING MIN(Rx.RxDate) <= S.FirstProc
  237.      6   AND S.LastProc <= MAX(Rx.RxDate)
  238.      7  GROUP BY S.PatNo, S.PatName, S.FirstProc, S.LastProc;
  239.  
  240.      PAT PATNAME      FIRSTPROC LASTPROC  FIRST RX  LAST RX  
  241.      --- ------------ --------- --------- --------- ---------
  242.      002 Mary White   23-SEP-90 23-SEP-90 09-APR-90 12-JAN-91
  243.  
  244.  
  245. Listing 12
  246.  
  247. SQL> SELECT Pat.PatNo, Pat.PatName,
  248.      2      'Back operation' Encounter, Proc.ProcDate EnctrDate
  249.      3  FROM Pat, Proc
  250.      4  WHERE Pat.PatNo = Proc.PatNo
  251.      5    AND Proc.Proc = 'BACK'
  252.      6        UNION
  253.      7  SELECT Pat.PatNo, Pat.PatName,
  254.      8       'Propox prescription', Rx.RxDate
  255.      9  FROM Pat, Rx
  256.     10  WHERE Pat.PatNo = Rx.PatNo
  257.     11    AND Rx.MedName = 'PROPOX';
  258.  
  259.     PAT PATNAME      ENCOUNTER           ENCTRDATE
  260.     --- ------------ ------------------- ---------
  261.     001 John Brown   Back operation      06-JUL-89
  262.     001 John Brown   Back operation      30-AUG-90
  263.     001 John Brown   Propox prescription 12-FEB-87
  264.     001 John Brown   Propox prescription 02-MAR-89
  265.     002 Mary White   Back operation      23-SEP-90
  266.     003 Jim Green    Propox prescription 30-JAN-89
  267.     003 Jim Green    Propox prescription 06-DEC-89
  268.  
  269.  
  270. Listing 13               
  271.  
  272. SQL> SELECT Pat.PatNo, Pat.PatName,
  273.      2       'Back operation' Encounter, Proc.ProcDate EnctrDate
  274.      3  FROM Pat, Proc
  275.      4  WHERE Pat.PatNo = Proc.PatNo
  276.      5    AND Proc.Proc = 'BACK'
  277.      6    AND Pat.PatNo IN (SELECT DISTINCT Rx.PatNo
  278.      7                FROM Rx
  279.      8                WHERE Rx.MedName = 'PROPOX')
  280.      9        UNION
  281.     10  SELECT Pat.PatNo, Pat.PatName,
  282.     11       'Propox prescription', Rx.RxDate
  283.     12  FROM Pat, Rx
  284.     13  WHERE Pat.PatNo = Rx.PatNo
  285.     14    AND Rx.MedName = 'PROPOX'
  286.     15    AND Pat.PatNo IN (SELECT DISTINCT Proc.PatNo
  287.     16                FROM Proc
  288.     17                WHERE Proc.Proc = 'BACK');
  289.  
  290.     PAT PATNAME      ENCOUNTER           ENCTRDATE
  291.     --- ------------ ------------------- ---------
  292.     001 John Brown   Back operation      06-JUL-89
  293.     001 John Brown   Back operation      30-AUG-90
  294.     001 John Brown   Propox prescription 12-FEB-87
  295.     001 John Brown   Propox prescription 02-MAR-89
  296.  
  297.