2014-12-23 16 views
1

這可能很奇怪,但我想以某種方式將BETWEEN子句與該表結合使用,如下例所示。來自記錄集的子句

假設我們有兩個表:

Tbl1 
╔════════╦════════╗ 
║ Value1 ║ Value2 ║ 
╠════════╬════════╣ 
║  1 ║  3 ║ 
║  5 ║  8 ║ 
╚════════╩════════╝ 

Tbl2 
╔═══════╦══════╗ 
║ Value ║ Stat ║ 
╠═══════╬══════╣ 
║  1 ║ 5 ║ 
║  2 ║ 0 ║ 
║  3 ║ 8 ║ 
║  5 ║ 1 ║ 
║  7 ║ 2 ║ 
║ 10 ║ 0 ║ 
║ 11 ║ 5 ║ 
║ 14 ║ 7 ║ 
╚═══════╩══════╝ 

TBL1設置了間隔規則,TBL2將落在間隔之間的實例。 這是怎麼一回事呢:

  • 第一時間間隔爲1至3個,所以採取一切tbl2的記錄,其中的價值是1和3之間,總結統計
  • 第一時間間隔爲5至8,所以採取一切TBL2記錄其中value是我可以用多種選擇這樣做5-8 之間並總結了統計

SELECT sum(Stat) FROM Tbl2 WHERE [Value] BETWEEN 1 AND 3 
SELECT sum(Stat) FROM Tbl2 WHERE [Value] BETWEEN 5 AND 8 

有沒有辦法來概括一切只是一個選擇? 我正在使用SQL Server 2008 R2,如果這對您有所幫助。

使用光標不存在問題,因爲在這兩個表中有一個記錄器和規則的LOT

回答

2

試試這個。使用Join on Between Condition

SELECT b.value1, b.value2, sum(a.Stat) 
FROM table2 a 
     JOIN table1 b 
     ON a.value BETWEEN b.value1 AND b.value2 
GROUP BY b.value1, b.value2 
+0

這一工程,當然。不能相信我的SQL技能在幾個月的時間裏變得如此生鏽,從而避免了hardcore db的工作。 – OzrenTkalcecKrznaric

5
SELECT tbl1.value1, tbl1.value2, sum(tbl2.Stat) 
FROM Tbl1 
JOIN Tbl2 ON tbl2.Value BETWEEN tbl1.value1 AND tbl1.value2 
GROUP BY tbl1.value1, tbl1.value2