Sql-Server

根據同一表中的另一個值從具有特定值的表中選擇行

  • February 19, 2020

我需要能夠選擇僅具有 tr_type 7 的所有 Userpin,但如果其他行中有 tr_type 7 和 8,則忽略 7 和 8 範例:

Userpin  TrDate       Time1      Tr_type
4555     12-02-2020    7:30         7
4555     12-02-2020    14:30        8
6985     12-02-2020    7:34         7
9854     12-02-2020    7:15         7
8542     12-02-2020    7:16         7
8542     12-02-2020    14:40        8

使用這個數據集,我正在尋找查詢以獲取當天只有 tr_type 等於 7 的 userpin 的數據,我想要這樣的結果:

Userpin  TrDate       Time1      Tr_type
6985     12-02-2020    7:34         7
9854     12-02-2020    7:15         7

我使用該查詢來獲取當天的數據

select UserPIN ,TrDate,Time1,Tr_Type
from mytable
where UserPIN in (6985,9854,4555,8542,4062,7070,4189,4197)
and TrDate=CAST(GETDATE() AS DATE)

這似乎是一個簡單的查詢,但我發現自己靠牆了。以合理有效的方式完成此任務的最佳方法是什麼?

SELECT t1.*
FROM mytable t1
WHERE t1.Tr_type = 7
 /* AND another conditions by Userpin list, TrDate, etc. */
 AND NOT EXISTS ( SELECT NULL
                  FROM mytable t2
                  WHERE t1.Userpin = t2.Userpin
                    /* AND another conditions */
                    AND t2.Tr_type = 8 )

引用自:https://dba.stackexchange.com/questions/259986