[英]T-Sql Select for repeating a column value using join
我有兩個要聯接的表,但要為第一個表的每個記錄重復第二個表的一列。
表A如下所示:
Date Hour
7/1/2014 0
7/1/2014 1
7/1/2014 2
.
.
.
7/1/2014 23
表B看起來像:
Date Hour SomeText Count
7/1/2014 10 TextA 20
7/1/2014 11 TextA 15
7/1/2014 10 TextB 35
7/1/2014 20 TextB 40
我希望我的結果重復表A的所有行以及表B的“ SomeText”列中的每個唯一文本,並且計數僅顯示其相對日期和小時。
因此結果將是:
Date Hout SomeText Count
7/1/2014 0 TextA 0
7/1/2014 1 TextA 0
.
.
7/1/2014 10 TextA 20
7/1/2014 11 TextA 15
.
.
7/1/2014 23 TextA 0
7/1/2014 0 TextB 0
7/1/2014 1 TextB 0
.
.
7/1/2014 10 TextB 35
7/1/2014 11 TextB 0
.
.
7/1/2014 20 TextB 40
7/1/2014 21 TextB 0
.
.
7/1/2014 23 TextB 0
任何幫助將不勝感激
您可以通過cross join
和left outer join
執行此類查詢:
select a.date, a.hour, t.text, coalesce(b.count, 0) as count
from tableA a cross join
(select distinct text from tableB b) t left outer join
tableB b
on b.date = a.date and b.hour = a.hour and b.text = t.text
order by a.date, a.hour, t.text;
聽起來您想要的是在表A中的每個日期和小時以及在表B中存在的每個SomeText都有一個條目,用0計數填充缺少的條目。
假設這是正確的,您可以這樣做:
SELECT TableA.Date, TableA.Hour, Texts.SomeText, COALESCE(TableB.Counts, 0)
FROM TableA
CROSS JOIN (SELECT DISTINCT SomeText FROM TableB) Texts
LEFT JOIN TableB ON TableA.Date = TableB.Date AND TableA.Hour = TableB.Hour AND Texts.SomeText = TableB.SomeText
ORDER BY TableA.Date, TableA.Hour, Texts.SomeText
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.