1
我有一個表返回一些行,我們正在查看的僅僅是rxID匹配並且如果這些amountPaid與eachother相反。如何返回刪除與兩列匹配的SQL行的表
在屏幕截圖中,我們有兩個條目的rxID爲3350593,其支付金額爲2.35和-2.35。這是一種貨幣類型的格式。
我的查詢到目前爲止只返回那兩行,因爲它在rxId上是匹配的。 y.amount在底部,無法找到,並且t.amountpaid不能被選中,同時也可以通過t.rxid進行分組。
如果我可以得到一個查詢來刪除這兩行具有相同的rxID和反轉數量的支付,我很感激。
SELECT x.*
FROM
(
SELECT IsInstyRxFlag, pri.payerReceiptItemId, CONVERT(varchar,rx.oeDate, 101) rxOeDate, CONVERT(DECIMAL(6,2), drx.payerOblig) payerObligation, CONVERT(DECIMAL(6,2), pri.amountPaid) amountPaid, pri.rxId, CONVERT(DECIMAL(6,2), (pri.amountPaid - drx.payerOblig)) difference, rxeventid
FROM PayerReceiptItem pri
JOIN Rx ON rx.rxId = pri.rxId
JOIN DispenseRx drx ON rx.rxId = drx.rxId
WHERE CONVERT(DECIMAL(6,2), drx.payerOblig) <> CONVERT(DECIMAL(6,2), pri.amountPaid) AND payerReceiptID = 19781
) x
JOIN (SELECT t.rxID
FROM
(
SELECT IsInstyRxFlag, pri.payerReceiptItemId, CONVERT(varchar,rx.oeDate, 101) rxOeDate, CONVERT(DECIMAL(6,2), drx.payerOblig) payerObligation, CONVERT(DECIMAL(6,2), pri.amountPaid) amountPaid, pri.rxId, CONVERT(DECIMAL(6,2), (pri.amountPaid - drx.payerOblig)) difference, rxeventid
FROM PayerReceiptItem pri
JOIN Rx ON rx.rxId = pri.rxId
JOIN DispenseRx drx ON rx.rxId = drx.rxId
WHERE CONVERT(DECIMAL(6,2), drx.payerOblig) <> CONVERT(DECIMAL(6,2), pri.amountPaid) AND payerReceiptID = 19781
) t
GROUP BY t.rxID
HAVING COUNT(t.rxID) > 1) y ON y.rxID = x.rxid
--can't find y.amountpaid, x can be seen
--and y.amountPaid = x.amountPaid
現在正在處理這個問題,但是x.amount付款是無效的,因爲它不是一個集合函數。
with
x AS (SELECT IsInstyRxFlag
, pri.payerReceiptItemId
, CONVERT(varchar,rx.oeDate, 101) rxOeDate
, CONVERT(DECIMAL(6,2), drx.payerOblig) payerObligation
, CONVERT(DECIMAL(6,2), pri.amountPaid) amountPaid
, pri.rxId
, CONVERT(DECIMAL(6,2), (pri.amountPaid - drx.payerOblig)) difference
, rxeventid
FROM PayerReceiptItem pri
JOIN Rx ON rx.rxId = pri.rxId
JOIN DispenseRx drx ON rx.rxId = drx.rxId
WHERE CONVERT(DECIMAL(6,2), drx.payerOblig) <> CONVERT(DECIMAL(6,2), pri.amountPaid) AND payerReceiptID = 19781)
SELECT x.*
FROM x
where not exists(
SELECT *
FROM x AS y
WHERE x.amountpaid = -1* y.amountpaid
AND x.difference = x.amountpaid
AND x.rxid = y.rxid
);
我需要查詢以刪除兩行與RXID匹配且amountPaid爲2.35 = -2.35 ... GROUP BY t.rxID HAVING COUNT(t.rxID)> 1)y ON y.rxID!= x.rxid and y.amountpaid = x.amountpaid * - 1 – Jayizzle
但y.amount只支付了Count(t.rxid),而t.amountpaid僅支持t.rxid。 – Jayizzle
爲了澄清,如果y.rxid = x.rxid爲真,我們有兩個匹配,那麼amountPaid可以是0和1.這不相等,我們需要保持這一點。 – Jayizzle