0

表格1

NoteNr | TransactionID
----------------------
4711   | NULL
4711   | 123
4812   | NULL
4913   | 444
4610   | NULL
4610   | NULL

我想要一个产生以下结果的查询

4812 NULL
4610 NULL

因此,如果相同的任何条目在其列NoteNr中具有值,则不应出现在查询结果中。结果集应仅包含 NoteNrs,如果所有条目在其列中都没有值(NULL)TransactionIDNoteNrNoteNrTransactionID

4

5 回答 5

2

这应该有效:

SELECT DISTINCT *
FROM   Table1 t
WHERE  NOT EXISTS (   SELECT 1
                      FROM   Table1
                      WHERE  NoteNr = t.NoteNr
                             AND TransactionId IS NOT NULL );
于 2018-07-11T08:04:56.610 回答
0

这应该这样做

select NoteNr, NULL From (
       select NoteNr, sum(TransactionID) as c From [table] group by NoteNr
) as t1 where t1.c IS NULL
于 2018-07-11T08:02:20.527 回答
0

这是避免删除重复项所需的分组的最有效方法:

Select notenr, Null as TransactionId from @table1
except
select notenr, Null as TransactionId from @table1 where TransactionID is not null
于 2018-07-11T08:45:32.633 回答
0

这会有所帮助。

SELECT NoteNr
    ,TransactionID
FROM (
    SELECT DISTINCT NoteNr
        ,TransactionID
        ,ROW_NUMBER() OVER (
            PARTITION BY NoteNr ORDER BY NoteNr
            ) AS rowno
    ) AS main
WHERE rowno = 1
于 2018-07-11T08:40:43.237 回答
0

USE CAN USE CTE 来实现这个

;WITH CTE
AS
(
SELECT *,ROW_NUMBER()OVER(PARTITION BY NoteNr  ORDER BY NoteNr)Rownum FROM #TEMP a   WHERE TransactionID IS NULL AND NoteNr NOT IN (SELECT NoteNr FROM #TEMP WHERE TransactionID IS NOT NULL)
)
SELECT NoteNr,TransactionID FROM CTE WHERE Rownum=1
于 2018-07-11T08:22:55.257 回答