Compare records expanded

Posted on 2012-08-27
Medium Priority
Last Modified: 2012-08-27
I have this query:

SELECT     TOP (100) PERCENT p.UnosId AS [UNOS ID], ro.Name AS Hospital, dr.CrossClampedOn AS CrossClamp,
                      MAX(CASE WHEN evCriteria.parentValueId = '860f6e6d-26e5-4667-8cb2-774f4dc249ae' THEN evCriteria.Description ELSE '0' END) AS [Donor Criteria Type],
                      CONVERT(varchar(10), p.Age) + '/ ' + p.AgeUnits AS [Age/Units], p.Sex,
                      MAX(CASE WHEN ev.EnumerationTypeId = 'd9510b51-3677-4c39-b76a-eea698f50bc0' THEN ev.Description ELSE '0' END) AS Race, CONVERT(varchar(10), p.Height)
                      + '/' + p.HeightUnits AS [Height/Units], CONVERT(varchar(10), p.Weight) + '/' + p.WeightUnits AS [Weight/Units], MAX(CASE WHEN c.NA IS NOT NULL
                      THEN CONVERT(nvarchar(10), c.NA) END) + '/' +
                          (SELECT     CONVERT(nvarchar(10), NA) AS Sodium
                            FROM          dbo.ITX_vw_tbl_Chemistry AS s
                            WHERE      (DateTime = MAX(c.DateTime))) AS [Sodium Peak/Last]
FROM         dbo.ITX_vw_tbl_Referral AS r INNER JOIN
                      dbo.ITX_vw_tbl_DonorReferral AS dr ON r.Id = dr.ReferralId INNER JOIN
                      dbo.ITX_vw_tbl_Patient AS p ON r.PatientId = p.Id INNER JOIN
                      dbo.ITX_vw_tbl_Organization AS ro ON r.ReferringOrganizationId = ro.Id INNER JOIN
                      dbo.ITX_vw_tbl_Chemistry AS c ON p.PatientId = c.PatientId LEFT OUTER JOIN
                      dbo.ITX_vw_tbl_EnumerationValue AS ev ON ev.Value = CONVERT(nvarchar(50), p.Race) LEFT OUTER JOIN
                      dbo.ITX_vw_tbl_EnumerationValue AS evCriteria ON evCriteria.Id = dr.OrganOutcomeDetail
GROUP BY p.UnosId, ro.Name, dr.CrossClampedOn, p.Age, p.Sex, p.Height, p.HeightUnits, p.Weight, p.WeightUnits, p.AgeUnits
HAVING      (p.UnosId = 'VHO228')
ORDER BY Hospital

I need to make sure the MAXDateTime corresponds last entered c.NA. Sometimes there are greater dates with no entries.
Question by:LCNW
  • 3
LVL 75

Accepted Solution

Aneesh Retnakaran earned 2000 total points
ID: 38337671
dont you think your where condition should be like this

                            WHERE      (DateTime = (SELECT MAX(c.DateTime) FROM dbo.ITX_vw_tbl_Chemistry AS c1 WHERE s.PatientId = c1.PatientId ) )) AS [Sodium Peak/Last]

Author Comment

ID: 38337712
Aneeshattingal, I get a subquery returns more than 1 value error.

Author Comment

ID: 38337749
Maybe a reverse coalesce? Not sure how to code that.

Author Closing Comment

ID: 38338414
This helped. Thanks.

Featured Post

Restore individual SQL databases with ease

Veeam Explorer for Microsoft SQL Server delivers an easy-to-use, wizard-driven interface for restoring your databases from a backup. No expert SQL background required. Web interface provides a complete view of all available SQL databases to simplify the recovery of lost database

Question has a verified solution.

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

I have written a PowerShell script to "walk" the security structure of each SQL instance to find:         Each Login (Windows or SQL)             * Its Server Roles             * Every database to which the login is mapped             * The associated "Database User" for this …
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.
Integration Management Part 2
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…

839 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