我们有一个审计表,我想在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
答案 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
。