我提出了明确但没有解决问题的问题

时间:2014-04-03 13:54:27

标签: sql sql-server

我们有一个审计表,我想在id_key或RX上显示不同。这将减少重复。由于我们上个月上线并且进行了一些测试,因此我无法控制一些重复项。但是如果你看一下数据:不同的和想要的输出是rx,seqno,当原因不是空白时

 ID_KEY   RX        SEQNO   STAT    REASON
 62261    5002616   7430    4   
 77848    5002616   12905   4       4
 91652    5002616   12905   4       4
 91652    5002616   12905   4       4

理想情况下,我希望在这种情况下显示不同的RX。这可能完全解决问题。行在审计表中意味着用户接受或拒绝。所以他们通常不会两次。一旦您接受或拒绝,我们就不会再在主用户队列中显示。

SELECT  
  a.ID_KEY,
  a.STAT, 
  a.TIER, 
  f.FACILITY_ID,  
  f.FACILITY_NAME Name, 
  a.RX, 
  a.PATIENTNAME, 
  a.MEDICATION , 
  (a.COST) as Cost, 
  (a.COST) as Interchanges,  
  s.Savings Savings
FROM[MBM].[T_CHARGES_AUDIT] a 

3 个答案:

答案 0 :(得分:0)

这将显示具有不同a.RX的结果。

SELECT * FROM (
SELECT  
  a.ID_KEY,
  a.STAT, 
  a.TIER, 
  f.FACILITY_ID,          --<-- Dont know how you got this Alias F here
  f.FACILITY_NAME Name,   --<-- Same here
  a.RX, 
  a.PATIENTNAME, 
  a.MEDICATION , 
  a.COST as Cost, 
  a.COST as Interchanges,  
  s.Savings Savings,         --<-- Again Alias S 
  ROW_NUMBER() OVER (PARTITION BY a.RX ORDER BY a.RX) AS RN
FROM[MBM].[T_CHARGES_AUDIT] a 
)Sub
WHERE RN = 1

答案 1 :(得分:0)

我怀疑你不想要分开,你想要每RX/SeqNo一个记录,这不是一回事。看起来您的密钥是ID_KEY,因此,假设这是一个普通的升序密钥,下面的SQL将为您提供每个RX / SeqNo的第一条记录。如果您想要最新的条目,只需将min更改为max

即可
SELECT  
  a.ID_KEY,
  a.STAT, 
  a.TIER, 
  f.FACILITY_ID,  
  f.FACILITY_NAME Name, 
  a.RX, 
  a.PATIENTNAME, 
  a.MEDICATION , 
  (a.COST) as Cost, 
  (a.COST) as Interchanges,  
  s.Savings Savings
FROM [MBM].[T_CHARGES_AUDIT] a
INNER JOIN (SELECT RX, SeqNo, min(ID_KEY)
            FROM [MBM].[T_CHARGES_AUDIT] a
            WHERE reason IS NOT NULL
            GROUP BY RX, SeqNo) mins on a.ID_KEY = mins.ID_KEY

请注意,这假设您的选择中未指定的Reason列位于同一个表中

编辑:

要获得该组合的最新版本,请将min更改为max,如下所示:

SELECT  
  a.ID_KEY,
  a.STAT, 
  a.TIER, 
  f.FACILITY_ID,  
  f.FACILITY_NAME Name, 
  a.RX, 
  a.PATIENTNAME, 
  a.MEDICATION , 
  (a.COST) as Cost, 
  (a.COST) as Interchanges,  
  s.Savings Savings
FROM [MBM].[T_CHARGES_AUDIT] a
INNER JOIN (SELECT RX, SeqNo, max(ID_KEY)
            FROM [MBM].[T_CHARGES_AUDIT] a
            WHERE reason IS NOT NULL
            GROUP BY RX, SeqNo) maxs on a.ID_KEY = maxs.ID_KEY

答案 2 :(得分:0)

尝试删除SELECT ID_KEY RX )中的列,然后再次使用DISTINCT