У меня есть таблица 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, я хочу получить сумму numEntities для всех строк, которые имеют состояние NJ, и адрес, такой как «% 25 Courtland Rd%».Я бы хотел иметь возможность сделать это с помощью 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 + '%'
Это, кажется, не работает, хотя ... любая идея, как я могувыполнить это?