我对SQL很陌生。我有一个带有“ Model_Id”和“ Tran_date”列的“交易”表。我有另一个“模型”表,其中包含“模型名称”和“模型名称”列。我想要“交易”表中所有在2017年而不是2018年出售的模型名称。如何使用Where
语句在SQL Server中获得所需的值?
答案 0 :(得分:2)
欢迎使用堆栈溢出。尽管我在发布这样的问题时在此处提供了答案(以伪SQL的形式),但您实际上确实需要提供示例数据和预期的结果。否则,这里的志愿者不得不猜测您的DDL和数据,这可能意味着它是错误的(但可能会有帮助)。
但是,如上所述,这是伪SQL,但应该可以帮助您:
SELECT YourColumns
FROM Model M
WHERE EXISTS (SELECT 1
FROM [Transaction] T
WHERE T.ModelID = M.ModelID
AND T.TranactionDate >= '20170101'
AND T.TranactionDate < '20180101')
AND NOT EXISTS (SELECT 1
FROM [Transaction] T
WHERE T.ModelID = M.ModelID
AND T.TranactionDate >= '20180101'
AND T.TranactionDate < '20190101');
答案 1 :(得分:0)
希望这会有所帮助!
SELECT m.Model_Name
FROM Transactions t
JOIN Model m on m.model_id=t.model_id
and year(t.tran_date)=2017
LEFT JOIN Model mm on mm.model_id=t.model_id
and year(t.tran_date)=2018
WHERE mm.model_id is null