2009-12-16 59 views
1

日期和ID使用SQL Server 2005如何隐藏从表

我想隐藏从表1日起在那里table1.id = table2.id和table1.date = table2.date

表1

ID Date 

001 01-01-2009 
001 02-02-2009 
001 03-01-2009 
001 04-01-2009 
002 01-01-2009 
002 02-02-2009 
002 03-01-2009 

...,

表2

ID Date Holiday 

001 01-02-2009 0 
001 02-02-2009 1 
001 03-01-2009 0 
001 04-01-2009 0 
002 01-01-2009 1 
002 02-02-2009 1 
002 03-01-2009 0 

..,

查询

SELECT ID, Date 
FROM table 
WHERE date NOT IN (SELECT date FROM table2 WHERE holiday = 1) 
    AND id NOT IN (SELECT id FROM table2 WHERE holiday = 1) 

上面的查询显示的是什么。

如何查询这种情况?

需要SQL查询帮助

回答

1

你可以做这样的事情:

SELECT ID,Date From Table1 
WHERE convert(VARCHAR,date)+'~'+convert(VARCHAR,id) NOT IN 
    (SELECT convert(VARCHAR,date)+'~'+convert(VARCHAR,id) FROM table2 
    WHERE Holiday=1) 
1

你的ID是不是很独特,而且基本上是隐藏的一切。

例如...

表1

001 2009年3月1日 - 这不是一个节日...

表2

001 2009年2月2日1 - 这是假期 - 但有一个“001”的ID - 与表1中不是假期的记录相同的ID!

您确定要筛选基于ID - 当然只是日期将工作:

SELECT 
    ID, 
    Date 
FROM 
    table 
WHERE 
date not in (select date from table2 where holiday = 1)