簡體   English   中英

如何只回退列中包含匹配數據的記錄?

[英]How can I pull back only records where column has matching data?

我需要從具有匹配項的表中提取數據。 到目前為止,這是我所擁有的,而且似乎沒有用。

SELECT 
    @@SERVERNAME AS Instance, 
    DB_NAME() AS [DataBase],
    co, id,
    changedBy,
    oldValue, newValue
FROM 
    Table1 T1
WHERE 
    CONVERT(DATE, changeDate) = CONVERT(DATE, GETDATE()) 
    AND column1 = 'name1'
    AND column2 IN ('name2','name3')
    AND (SELECT COUNT(*) FROM Table1 T2 WHERE T1.newValue = T2.newValue )>3

該表由觸發器發生的更改組成。 我需要能夠查詢該表並拉回條件中匹配的所有項目。

這將是表格的示例

instance | database | co  | id | changedby | oldvalue | newvalue
----------------------------------------------------------------
sql01    |  123     | abc | 01 |  user1    |   1234   |    5678

每天可能有數百萬種此類記錄。 我只需要回退的地方是4或更多行上newvalue相同的行。 由於此數據庫中充滿了個人信息(我在一家與銀行業務有關的公司工作),我正在尋找可能會欺詐性地更改了銀行路由和會計的行。

您可以使用匯總窗口功能執行此操作:

;with cte as(select *, count() over(partition by newvalue) as rn
             from table1 
             where ...)
select * 
from cte
where rn > 3

注意:您應該從where子句中刪除它:

AND (SELECT COUNT(*) FROM Table1 T2 WHERE T1.newValue = T2.newValue )>3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM