我有一個SQL表AddressCount
有3個字段:address
,state
和numEntities
。我想要做的是獲得每個地址+狀態組合基於類似的numEntities的總和。這有點很難形容,但我認爲以下相關查詢正確代表什麼,我試圖完成:我怎樣才能基於像總結一列?
SELECT Address, State,
(SELECT SUM(NumEntities)
FROM AddressCount innerQry
WHERE innerQry.address LIKE '%' + outerQry.address + '%'
AND innerQry.state = outerQry.state) As NumEntities
FROM AddressCount outerQry
基本上,我想有一個地址,一個狀態表中結束了,所有地址的numEntities總和就像通配符所包圍的那個地址一樣。所以,如果地址是「25 Courtland Rd」而州是NJ,那麼我想要得到NJ狀態爲「%25 Courtland Rd%」的所有行的numEntities總和。我很想用GROUP BY LIKE來完成這項工作,但我認爲這不適用於SQL。基本概念是要完成這樣的事情:
SELECT address, state, sum(numEntities)
FROM AddressCount
GROUP BY (LIKE '%' + address + '%')
我上面發佈的相關查詢的SQL語句似乎準確的,但我想完成同樣的事情,如果可能的話,由內桌子上的連接本身。最近,我讀,它可能加入表上LIKE表達,所以我要完成類似以下內容:
SELECT t1.Address, t1.State, SUM(t2.NumEntities)
FROM AddressCount t1
INNER JOIN AddressCount t2
ON t1.state = t2.state
AND t2.address LIKE '%' + t1.address + '%'
這似乎並沒有工作,雖然...任何想法如何,我可以做到這一點?
我不通過確切的地址,想組,我想按類似的東西地址...... – froadie 2010-12-09 09:38:22
但是你通過精確t2.address不羣 - 只有通過精確t1.address,這是你的定義已經確切。 – Arvo 2010-12-09 09:43:02