2010-10-25 13 views
1

我有2個表變量@Data和@DateTableSQL UNION 2個表變量,其中日期是相同的,但其他數據並不

@Data conatains如下:

Company Date  Type  Select 
Altec 12-1-2010  d   2 
Altec 12-1-2010  a   2 
Alect 12-3-2010  d   3 

@DateTable包含以下:

Company Date   Type Select 
Altec 12-1-2010  a 0 
Altec 12-3-2010  a 0 
Altec 12-5-2010  a 0 
Altec 12-6-2010  a 0 

我需要在同一查詢中同時顯示d和a。因此,如果沒有與@data表中的a匹配的d,它需要將它從@DateTable中提取出來。

所以基本上我想要的結果如下

Company DATE  Type Select 
ALTEC 12-1-10  d 2 
ALTEC 12-1-10  a 2 
ALTEC 12-3-10  d 3 
ALTEC 12-3-10  a 0 (This is pulled from @DateTable) 

我怎麼會聯盟這兩個表沒有得到那些已經在@Data表,但也沒有gettig從@DateType表多餘的人的那些即不要匹配.....

+0

哪些列(S)是兩個表之間是相同的 - 'company'和'date'? – 2010-10-25 15:48:24

+0

@OMG - 也是'Type',我想。 – 2010-10-25 15:52:02

+0

日期,類型,公司 – user380432 2010-10-25 16:01:36

回答

1

使用EXISTS/NOT EXISTS:

SELECT Company, Date, Type, Select FROM DataTable 
UNION ALL 
SELECT Company, Date, Type, Select FROM DateTable 
    WHERE EXISTS (SELECT * FROM DataTable WHERE Company = DateTable.Company AND Date = DateTable.Date) 
    AND NOT EXISTS (SELECT * FROM DataTable WHERE Company = DateTable.Company AND Date = DateTable.Date AND Type = DateTable.Type) 
+0

我如何得到這個與表變量一起工作? – user380432 2010-10-25 16:30:38

+0

,因爲@DataTable和@DateTable將是表變量... – user380432 2010-10-25 16:30:54

0

使用聯盟:

select [Company], [Date], [Type], sum([Select]) as [Select] 
from (select [Company], [Date], [Type], [Select] from @Data union all 
     select [Company], [Date], [Type], [Select] from @DateTable) sq 
group by [Company], [Date], [Type] 
2

這是我的看法:

SELECT dt.company, 
     dt.date, 
     COALESCE(d.type, dt.type) AS type, 
     COALESCE(d.select, dt.select) AS select 
FROM @DateTable dt 
    LEFT JOIN @Data d ON d.company = dt.company 
         AND d.date = dt.date 
+0

+1,因爲它可能比Larry更快,更符合我的要求。你可能會希望在那裏有一個「group by」來區分。另外,如果在兩個表中有兩個記錄(不同的「select」值),則可能需要一個'where'子句。另外,select可能也應該用雙引號,因爲它是一個sql保留字。 – vol7ron 2010-10-25 16:59:54

+0

也許'd.company = dt.company和d.date = dt.date和d。「選擇」!= dt。「選擇」' – vol7ron 2010-10-25 17:02:57

+0

如果在同一日期和公司中重複「類型」每個表,不會將這個SQL包含在結果中? – 2010-10-25 17:22:02

相關問題