Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询,我需要每人1行,最低Id为两列_Sql_Sql Server_Tsql_Sql Server 2014 - Fatal编程技术网

SQL查询,我需要每人1行,最低Id为两列

SQL查询,我需要每人1行,最低Id为两列,sql,sql-server,tsql,sql-server-2014,Sql,Sql Server,Tsql,Sql Server 2014,我有一个查询,它返回以下结果: SELECT Mem.MemberID, Mem.LastName + ', ' + Mem.FirstName AS Name, MD.DiagnosisID, Diag.DiagnosisDescription, DC.DiagnosisCategoryID, DC.CategoryDescription, DC.CategoryScore FROM Member AS Mem LEFT OUTER JOIN

我有一个查询,它返回以下结果:

SELECT 
    Mem.MemberID, Mem.LastName + ', ' + Mem.FirstName AS Name, 
    MD.DiagnosisID, 
    Diag.DiagnosisDescription, 
    DC.DiagnosisCategoryID, DC.CategoryDescription, DC.CategoryScore
FROM 
    Member AS Mem
LEFT OUTER JOIN 
    MemberDiagnosis AS MD ON Mem.MemberID = MD.MemberID
LEFT OUTER JOIN 
    Diagnosis AS Diag ON MD.DiagnosisID = Diag.DiagnosisID
LEFT OUTER JOIN 
    DiagnosisCategoryMap AS Map ON Map.DiagnosisID = Diag.DiagnosisID
LEFT OUTER JOIN 
    DiagnosisCategory AS DC ON DC.DiagnosisCategoryID = Map.DiagnosisCategoryID
ORDER BY 
    Name ASC
在该查询和结果集中,我如何才能使用

  • 最低诊断ID及其描述
  • 具有desc和score的最低类别ID
  • 返回类别ID 1及其desc和score,而不是null category

  • 请尝试以下查询:

    ID  | Name          | D.ID | D.Desc         | C.ID | C. Desc     | C.Score
    ----+---------------+------+----------------+------+-------------+----------
    2   | Smith, Jack   | NULL | NULL           | NULL | NULL        | NULL
    1   | Smith, John   | 2    | Test Diagnosis | 2    | Category B  | 20
    1   | Smith, John   | 4    | Test Diagnosis | 3    | Category C  | 30
    3   | Smyth, Will   | 3    | Test Diagnosis | 3    | Category C  | 30
    3   | Smyth, Will   | 4    | Test Diagnosis | 3    | Category C  | 30
    

    答案因您的数据库供应商而异(MySQL有一个答案,其他人则有一个不同的答案)。您使用的是什么关系数据库管理系统?我使用的是MS SQL 2014。它几乎满足了我的需求。唯一的问题是,没有诊断的杰克没有出现在这个问题上。虽然它做了我需要它为另外两个做的事情。考虑到它应该拉的第一个左外连接,没有?@ShaneWorkman只需将
    内连接
    替换为
    左连接
    。我更新了我的答案,看看吧
    SELECT T1.*,Diag2.DiagnosisDescription, DC2.CategoryDescription, DC2.CategoryScore 
    FROM (SELECT DISTINCT 
    
        Mem.MemberID, Mem.LastName + ', ' + Mem.FirstName AS Name, 
        MIN(MD.DiagnosisID) OVER(PARTITION BY  Mem.MemberID) AS DiagnosisID, 
    
        MIN(ISNULL(DC.DiagnosisCategoryID,1)) OVER(PARTITION BY  Mem.MemberID) AS DiagnosisCategoryID
    FROM 
        Member AS Mem
    LEFT OUTER JOIN 
        MemberDiagnosis AS MD ON Mem.MemberID = MD.MemberID
    LEFT OUTER JOIN 
        Diagnosis AS Diag ON MD.DiagnosisID = Diag.DiagnosisID
    LEFT OUTER JOIN 
        DiagnosisCategoryMap AS Map ON Map.DiagnosisID = Diag.DiagnosisID
    LEFT OUTER JOIN 
        DiagnosisCategory AS DC ON ISNULL(DC.DiagnosisCategoryID,1) = ISNULL(Map.DiagnosisCategoryID,1) ) AS T1 
    
    LEFT JOIN   Diagnosis AS Diag2 ON T1.DiagnosisID = Diag2.DiagnosisID
    LEFT JOIN   DiagnosisCategory AS DC2 ON T1.DiagnosisCategoryID = DC2.DiagnosisCategoryID
    ORDER BY T1.NAME