enter image description here我正在创建两个值的查询,一个句号和相应的日期。期间是与我们的月份相似但不相同的会计期间。日期基本上是正确的,但我认为我会用WHERE语句清理一些不一致的地方。
例如,2015年4月1日属于第3期,但它出现在第3期和第4期。为了解决这个问题,我想我会创建一个WHERE语句,说明:
SELECT DISTINCT table1.period,
table1.datetime
FROM table1
WHERE table1.period <> 4 AND table1.datetime <> '4/1/2015'
这取消了所有第4期而不是我需要的第4期。我也尝试过datetime语法:
AND table1.datetime <> '20150401 00:00:00.000'
两种语法都有相同的结果。我对SQL很缺乏经验,并且总是讨厌处理datetime值,所以任何帮助都会很棒。
-EDIT-忘记将单引号添加到第一个日期时间WHERE子句。
答案 0 :(得分:1)
请尝试以下操作:
SELECT DISTINCT table1.period,
table1.datetime
FROM table1
WHERE CASE WHEN table1.period = 4 AND CONVERT(VARCHAR(8),table1.datetime,112) = '20150401' THEN 1 ELSE 0 END = 0
这只删除了包含period=4
和datetime=20150401
的行,而您的查询首先删除了period=4
的任何内容(无论[datetime]是什么),然后摆脱任何事情datetime=20150401
。
答案 1 :(得分:0)
您是否说过句号是字符串字段?你的意思是varchar?
您还想查看日期部分,而不是时间吗?
然后你可以试试这个
SELECT DISTINCT table1.period,
table1.datetime
FROM table1
WHERE table1.period <> '4'
AND convert(date, table1.datetime) <> '20150401'