Solved

Is there a way to subtract one rowset from another

Posted on 2010-09-14
3
297 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

NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
SSRS ReportViewer report timeout 7 146
SSRS  - Dropdown with Null 3 33
How can I find this data? 3 25
Applying Roles in Common Scenarios 3 17
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 article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

756 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