Как я могу сделать группу по - PullRequest
0 голосов
/ 07 марта 2012

Я могу сделать много запросов на дом, но только один запрос может быть принят. Если запрос принят, запрос сохраняется в моей таблице San_Negocio. В моей таблице San_Proposta я сохраняю запрос.

Я хочу сделать запрос, который получает все данные в san_proposta, который имеет статус, равный 1, и все данные в san_proposta, который имеет весь статус, равный 2, но в san_negocio, ValidaVenda отличается от ValidaCaptacao

San_Proposta

Proposta_Id    Imovel_Id    DataHora                Status
1              2001         2012-03-07 00:00:00     1
2              2001         2012-03-07 00:00:01     1
3              2001         2012-03-07 14:00:00     2
4              2001         2012-03-07 15:00:00     1
5              2002         2012-03-07 00:00:00     1
6              2002         2012-03-07 00:00:02     1

San_Negocio

Negocio_Id     Imovel_Id    Proposta_Id   ValidaVenda    ValidaCaptacao
1              2001         3             0              1

Что я хочу

Imovel_Id    Number Of Propost With status 1
2001         3
2002         2

Я пробую этот запрос, но проблема в возвращении. Imovel_Id повторяется из-за моего DataHora, которые отличаются в каждом запросе (Proposta_Id).

SELECT p.Proposta_Id 
FROM San_Proposta p 
WHERE p.StatusProposta_Id = 1 

UNION 

SELECT p.Proposta_Id 
FROM San_Proposta p 
LEFT JOIN San_Negocio 
ON San_Negocio.Proposta_Id = p.Proposta_Id 
WHERE p.StatusProposta_Id = 2 
AND San_Negocio.ValidaCaptacao <> San_Negocio.ValidaVenda

Ответы [ 2 ]

4 голосов
/ 07 марта 2012

Я не проверял это, но это будет выглядеть примерно так:

select Imovel_Id, count(*) as "Number Of Propost With status 1" 
FROM San_Proposta 
WHERE Imovel_Id=2001 and Status=1
GROUPBY Imovel_Id

Для обновления:

select Imovel_Id, count(*) as "Number Of Propost With status 1" 
FROM San_Proposta p LEFT OUTER JOIN San_Negocio n ON p.Imovel_Id=n.Imovel_Id
WHERE p.Status=1
GROUPBY Imovel_Id

Затем можно приступить к оценке любых других столбцов в предложении where, обновив где:

ГДЕ p.Status = 1 и p.StatusProposta_Id = 2

Синтаксис для левого внешнего объединения может быть другим для sqlServer

0 голосов
/ 07 марта 2012
SELECT sn.Imovel_Id,COUNT(sn.Proposta_Id) as Count_Proposta_status
FROM San_Proposta sp,San_Negocio sn
WHERE sp.Imovel_Id = sn.Imovel_Id
AND sp.Imovel_Id=2001
AND sp.Status = 1
AND sn.Proposta_Id is NOT NULL 
GROUP BY sn.Imovel_Id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...