日期:2014-05-18 浏览次数:20746 次
CREATE TABLE tb (a varchar(2),b varchar(2),c datetime) INSERT INTO tb VALUES ('1','1','2007-1-21') INSERT INTO tb VALUES ('2','1','2007-1-22') INSERT INTO tb VALUES ('3','0','2007-1-1') INSERT INTO tb VALUES ('4','0','2007-1-2') INSERT INTO tb VALUES ('5','1','2007-1-23') INSERT INTO tb VALUES ('6','0','2007-1-3') INSERT INTO tb VALUES ('7','0','2007-1-23') INSERT INTO tb VALUES ('8','0','2007-1-25') INSERT INTO tb VALUES ('9','1','2007-1-24') SELECT * FROM TB WHERE (B='0') OR NOT (B='1' AND C NOT BETWEEN '2007-1-22' AND '2007-1-23') DROP TABLE TB
------解决方案--------------------
CREATE TABLE tb (a varchar(2),b varchar(2),c datetime)
INSERT INTO tb VALUES ('1','1','2007-1-21')
INSERT INTO tb VALUES ('2','1','2007-1-22')
INSERT INTO tb VALUES ('3','0','2007-1-1')
INSERT INTO tb VALUES ('4','0','2007-1-2')
INSERT INTO tb VALUES ('5','1','2007-1-23')
INSERT INTO tb VALUES ('6','0','2007-1-3')
INSERT INTO tb VALUES ('7','0','2007-1-23')
INSERT INTO tb VALUES ('8','0','2007-1-25')
INSERT INTO tb VALUES ('9','1','2007-1-24')
select * from tb where b=0 or b=1 and c between '2007-1-22' and '2007-1-23'
------解决方案--------------------
SELECT * FROM TB WHERE (B='0') OR (B='1' AND C BETWEEN '2007-1-22' AND '2007-1-23')
------解决方案--------------------
--> 测试数据: #T if object_id('tempdb.dbo.#T') is not null drop table #T create table #T (A int,B int,C datetime) insert into #T select 1,1,'2007-1-21' union all select 2,1,'2007-1-22' union all select 3,0,'2007-1-1' union all select 4,0,'2007-1-2' union all select 5,1,'2007-1-23' union all select 6,0,'2007-1-3' union all select 7,0,'2007-1-23' union all select 8,0,'2007-1-25' union all select 9,1,'2007-1-24' select * from #T where B=0 or (B=1 and c between '2007-1-22' and '2007-1-23') /* A B C ----------- ----------- ----------------------- 2 1 2007-01-22 00:00:00.000 3 0 2007-01-01 00:00:00.000 4 0 2007-01-02 00:00:00.000 5 1 2007-01-23 00:00:00.000 6 0 2007-01-03 00:00:00.000 7 0 2007-01-23 00:00:00.000 8 0 2007-01-25 00:00:00.000 */
------解决方案--------------------
要显示出所有B=0数据,但排除在B=1的情况下,C在2007-1-22到2007-1-23之外的数据。
----------------------------
(所有B=0的数据) 或者 (B=1并且C在2007-1-22到2007-1-23之间的数据)
没难度,楼主没理清逻辑而已。