Sql server 2012 查询以检查不在1个表中工作但在另一个表中工作的重复记录

Sql server 2012 查询以检查不在1个表中工作但在另一个表中工作的重复记录,sql-server-2012,Sql Server 2012,我有一张上个月(即2018年1月)的记录表。表格格式如下: D || month || year || No of Sales Jan-18 || 01 || 2018 || 231 现在,我正在运行一个查询到查询来检查这个记录,但是,我没有得到任何输出 SELECT * FROM mytable WHERE [year]=left(CONVERT(VARCHAR(8),DATEADD(mm,-1,DATEADD(mm,DATEDIFF(mm,0,GE

我有一张上个月(即2018年1月)的记录表。表格格式如下:

D       ||  month  ||  year  ||  No of Sales
Jan-18  ||   01    ||  2018  ||  231
现在,我正在运行一个查询到查询来检查这个记录,但是,我没有得到任何输出

SELECT * FROM mytable 
WHERE [year]=left(CONVERT(VARCHAR(8),DATEADD(mm,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)),112),4) 
AND [month]=left(CONVERT(VARCHAR(8),DATEADD(mm,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)),1),2)
预期产出为:

D       ||  month  ||  year  ||  No of Sales
Jan-18  ||   01    ||  2018  ||  231

此查询用于另一个与“mytable”结构相同的表。我做错了什么?

您的查询是正确的。我唯一感到怀疑的是-您的表行中可能有一些不必要的空格

更好地使用微调功能

更新现有记录

试一试


检查此查询。若结果不为空,则表示存在上个月的记录

select
    *
from
    myTable
where
    eomonth(datefromparts([year], [month], 1)) = eomonth(getdate(), -1)

你想查什么?你的预期产出是什么?我的预期产出是上个月的记录,如问题所示。你的样本数据和预期产出是相同的。我们怎么知道你想得到什么?然后给出更多的样本数据上个月的数据是如何存储在另一个表中的?我不知道你所说的更多数据是什么意思。表中有过去每个月的1条记录。我需要检查一下表中是否有上个月的记录。如果没有,那么我将运行一个单独的查询,将上个月的记录插入表中。我在问题中提到的情况是,表已经有上个月的记录,但我使用的查询没有返回此记录。我只是想知道这个问题出了什么问题。谢谢。你能举个例子吗?非常感谢,乌兹。如果你能帮我找出问题所在,我将不胜感激。若您确信您的查询应该返回一条记录,那个么问题可能在您的数据中。尝试更改
…其中ltrim([year])=您的_表达式和ltrim([month])=您的_表达式
select
    *
from
    myTable
where
    eomonth(datefromparts([year], [month], 1)) = eomonth(getdate(), -1)