Solved

Is there a way to subtract one rowset from another

Posted on 2010-09-14
3
292 Views
Last Modified: 2012-05-10
Hi - I have a query that returns a reulst set:
AcctNumber tdactdatetimenurpcwork
V04356634      2010-08-02 09:17:00.000
V04356634      2010-08-02 09:32:00.000
V04356634      2010-08-02 09:47:00.000
V04356634      2010-08-02 10:05:00.000
V04356634      2010-08-02 10:20:00.000
V04356634      2010-08-02 10:50:00.000
V04356634      2010-08-02 11:20:00.000
V04356634      2010-08-02 11:50:00.000
V04356634      2010-08-02 12:20:00.000

There are no unique idetifiers in the table other than the difference in time.  I need to know the difference in time between each row.  Any ideas?  I am writing in Visual Studio 2005.
SELECT    acctnumber,tdactdatetimenurpcwork

FROM         Picis.dbo.[Cases by Day] AS p LEFT OUTER JOIN

                          (SELECT     UrnADMPAT, AcctNumber, Location, Name, Status, CASE WHEN servicedate IS NULL 

                                                   THEN admitdate ELSE servicedate END AS AdmitDate

                            FROM          AdmPatientFile 

                            WHERE      (Status LIKE '%sdc%')) AS a ON a.AcctNumber = p.crp_acct_nbr LEFT OUTER JOIN

                          (SELECT     NURPCWORKDocumentedResults.PatientNURPCWORK, NURPCWORKDocumentedResults.IntBaseNURPCWORK, 

                                                   NURPCWORKDocumentedResults.IntUrnNURPCWORK, NURPCWORKDocumentedResults.TdActDateNURPCWORK, 

                                                   NURPCWORKDocumentedResults.TdActTimeNURPCWORK, NURPCWORKDocumentedResults.TdActCtrNURPCWORK, 

                                                   NURPCWORKDocumentedResults.TdQueryNURPCWORK, NURPCWORKDocumentedResults.TdValue, 

                                                   NURPCWORKDocumentedResults.tdactdatetimenurpcwork

                            FROM          NURPCWORKDocumentedResults INNER JOIN

                                                   NURPCWORKIntDocumentedActivity ON 

                                                   NURPCWORKDocumentedResults.PatientNURPCWORK = NURPCWORKIntDocumentedActivity.PatientNURPCWORK

                            WHERE      

                                                   (NURPCWORKDocumentedResults.IntBaseNURPCWORK = '25030')) AS n ON 

                      n.PatientNURPCWORK = a.UrnADMPAT

WHERE     (a.Location = 'ambsurg') AND ACCTNUMBER = 'V04356634'

group by acctnumber,tdactdatetimenurpcwork

ORDER BY TDACTDATETIMENURPCWORK

Open in new window

0
Comment
Question by:palmer9
  • 2
3 Comments
 
LVL 41

Expert Comment

by:ralmada
ID: 33674674
try
;with CTE as (

SELECT    acctnumber,tdactdatetimenurpcwork, row_number() over (order by tdactdatetimenurpcwork) rn

FROM         Picis.dbo.[Cases by Day] AS p LEFT OUTER JOIN

                          (SELECT     UrnADMPAT, AcctNumber, Location, Name, Status, CASE WHEN servicedate IS NULL 

                                                   THEN admitdate ELSE servicedate END AS AdmitDate

                            FROM          AdmPatientFile 

                            WHERE      (Status LIKE '%sdc%')) AS a ON a.AcctNumber = p.crp_acct_nbr LEFT OUTER JOIN

                          (SELECT     NURPCWORKDocumentedResults.PatientNURPCWORK, NURPCWORKDocumentedResults.IntBaseNURPCWORK, 

                                                   NURPCWORKDocumentedResults.IntUrnNURPCWORK, NURPCWORKDocumentedResults.TdActDateNURPCWORK, 

                                                   NURPCWORKDocumentedResults.TdActTimeNURPCWORK, NURPCWORKDocumentedResults.TdActCtrNURPCWORK, 

                                                   NURPCWORKDocumentedResults.TdQueryNURPCWORK, NURPCWORKDocumentedResults.TdValue, 

                                                   NURPCWORKDocumentedResults.tdactdatetimenurpcwork

                            FROM          NURPCWORKDocumentedResults INNER JOIN

                                                   NURPCWORKIntDocumentedActivity ON 

                                                   NURPCWORKDocumentedResults.PatientNURPCWORK = NURPCWORKIntDocumentedActivity.PatientNURPCWORK

                            WHERE      

                                                   (NURPCWORKDocumentedResults.IntBaseNURPCWORK = '25030')) AS n ON 

                      n.PatientNURPCWORK = a.UrnADMPAT

WHERE     (a.Location = 'ambsurg') AND ACCTNUMBER = 'V04356634'

group by acctnumber,tdactdatetimenurpcwork

)

select a.acctnumber,a.tdactdatetimenurpcwork, datediff(minute, a.tdactdatetimenurpcwork, b.tdactdatetimenurpcwork) as difference

from CTE a

left join CTE b on a.rn = b.rn + 1

ORDER BY TDACTDATETIMENURPCWORK

Open in new window

0
 
LVL 41

Accepted Solution

by:
ralmada earned 500 total points
ID: 33674693
sorry like this
;with CTE as (

SELECT    acctnumber,tdactdatetimenurpcwork, row_number() over (order by tdactdatetimenurpcwork) rn

FROM         Picis.dbo.[Cases by Day] AS p LEFT OUTER JOIN

                          (SELECT     UrnADMPAT, AcctNumber, Location, Name, Status, CASE WHEN servicedate IS NULL 

                                                   THEN admitdate ELSE servicedate END AS AdmitDate

                            FROM          AdmPatientFile 

                            WHERE      (Status LIKE '%sdc%')) AS a ON a.AcctNumber = p.crp_acct_nbr LEFT OUTER JOIN

                          (SELECT     NURPCWORKDocumentedResults.PatientNURPCWORK, NURPCWORKDocumentedResults.IntBaseNURPCWORK, 

                                                   NURPCWORKDocumentedResults.IntUrnNURPCWORK, NURPCWORKDocumentedResults.TdActDateNURPCWORK, 

                                                   NURPCWORKDocumentedResults.TdActTimeNURPCWORK, NURPCWORKDocumentedResults.TdActCtrNURPCWORK, 

                                                   NURPCWORKDocumentedResults.TdQueryNURPCWORK, NURPCWORKDocumentedResults.TdValue, 

                                                   NURPCWORKDocumentedResults.tdactdatetimenurpcwork

                            FROM          NURPCWORKDocumentedResults INNER JOIN

                                                   NURPCWORKIntDocumentedActivity ON 

                                                   NURPCWORKDocumentedResults.PatientNURPCWORK = NURPCWORKIntDocumentedActivity.PatientNURPCWORK

                            WHERE      

                                                   (NURPCWORKDocumentedResults.IntBaseNURPCWORK = '25030')) AS n ON 

                      n.PatientNURPCWORK = a.UrnADMPAT

WHERE     (a.Location = 'ambsurg') AND ACCTNUMBER = 'V04356634'

group by acctnumber,tdactdatetimenurpcwork

)

select a.acctnumber,a.tdactdatetimenurpcwork, b.tdactdatetimenurpcwork, datediff(minute, a.tdactdatetimenurpcwork, b.tdactdatetimenurpcwork) as difference

from CTE a

left join CTE b on a.rn + 1 = b.rn

ORDER BY TDACTDATETIMENURPCWORK

Open in new window

0
 

Author Comment

by:palmer9
ID: 33674710
Genius - Thank you SO MUCH!!!
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Suggested Solutions

Hi All, I am here to write a simple article to move SSRS (SQL Server Reporting Services) reports from one server to another. When I have faced the same issue to move reports those were developed by developer on development server and now need to …
A recent questions about how to add SSRS named instances, couldn't find any that talks about SQL server 2008, anyway I decided to help by creating some screen shots. The installation is straightforward, you just pop the SQL server 2008 installati…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now