Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 server 新事务的saccionId是被取消的事务的transactionid。@user1204716我想得到的是;为什么您现有的示例会返回第三个条目(两种情况下原始事务都已取消),而额外的取消将导致不返回条目?或者我完全误解了什么?我不想显示取消的交易。我做了一_Sql Server_Parent Child - Fatal编程技术网

Sql server 新事务的saccionId是被取消的事务的transactionid。@user1204716我想得到的是;为什么您现有的示例会返回第三个条目(两种情况下原始事务都已取消),而额外的取消将导致不返回条目?或者我完全误解了什么?我不想显示取消的交易。我做了一

Sql server 新事务的saccionId是被取消的事务的transactionid。@user1204716我想得到的是;为什么您现有的示例会返回第三个条目(两种情况下原始事务都已取消),而额外的取消将导致不返回条目?或者我完全误解了什么?我不想显示取消的交易。我做了一,sql-server,parent-child,Sql Server,Parent Child,新事务的saccionId是被取消的事务的transactionid。@user1204716我想得到的是;为什么您现有的示例会返回第三个条目(两种情况下原始事务都已取消),而额外的取消将导致不返回条目?或者我完全误解了什么?我不想显示取消的交易。我做了一笔交易(1)并取消了它(2)。所以我不想同时显示这两个事务。如果我再次取消交易(2)(已取消交易),我需要显示新交易(3)(已取消)。那么只有它与总数相匹配。如果我取消第三个交易,则进行第四个交易,因此无需显示任何。谢谢,,如果我取消第三个交易


新事务的saccionId是被取消的事务的transactionid。@user1204716我想得到的是;为什么您现有的示例会返回第三个条目(两种情况下原始事务都已取消),而额外的取消将导致不返回条目?或者我完全误解了什么?我不想显示取消的交易。我做了一笔交易(1)并取消了它(2)。所以我不想同时显示这两个事务。如果我再次取消交易(2)(已取消交易),我需要显示新交易(3)(已取消)。那么只有它与总数相匹配。如果我取消第三个交易,则进行第四个交易,因此无需显示任何。谢谢,,如果我取消第三个交易,则将进行新交易,交易ID:4金额:-100 ParentTransactionID:3以上查询结果为最后一个条目。。在这种情况下,当所有事务被取消时,不应返回任何行。@user1204716那么我如何知道它已被取消?这是第一笔交易的反向金额,或者你在考虑其他方式吗?如果交易被取消,则会进行新的分录。新事务的parenttransactionid是被取消的事务的transactionid。@user1204716我想得到的是;为什么您现有的示例会返回第三个条目(两种情况下原始事务都已取消),而额外的取消将导致不返回条目?或者我完全误解了什么?我不想显示取消的交易。我做了一笔交易(1)并取消了它(2)。所以我不想同时显示这两个事务。如果我再次取消交易(2)(已取消交易),我需要显示新交易(3)(已取消)。那么只有它与总数相匹配。如果我取消第三笔交易,则会进行第四笔交易,因此无需显示任何交易。
SELECT * FROM Transaction t
WHERE NOT EXISTS (SELECT TOP 1 NULL FROM Transaction pt
WHERE (pt.ParentTransactionID = t.TransactionID OR t.ParentTransactionID = pt.TransactionID)
AND ABS(t.Amount) = ABS(pt.Amount))
SELECT t1.* FROM Transactions t1
LEFT JOIN Transactions t2
  ON t1.TransactionId = t2.ParentTransactionId
WHERE t2.TransactionId IS NULL;
WITH ChangeLog(TransactionID, Amount, ParentTransactionID, 
               IsCancel, OriginalTransactionID) AS
(
  SELECT TransactionID, Amount, ParentTransactionID, 0, TransactionID
  FROM Transactions WHERE ParentTransactionID IS NULL
  UNION ALL
  SELECT t.TransactionID, t.Amount, t.ParentTransactionID, 
         1-c.IsCancel, c.OriginalTransactionID
  FROM Transactions t
  JOIN ChangeLog c ON c.TransactionID = t.ParentTransactionID
) 
SELECT c1.TransactionID, c1.Amount, c1.ParentTransactionID
FROM ChangeLog c1
LEFT JOIN ChangeLog c2
  ON c1.TransactionID < c2.TransactionID
     AND c1.OriginalTransactionID = c2.OriginalTransactionID
WHERE c2.TransactionID IS NULL AND c1.IsCancel=0