2012-02-08 49 views
0

我要填寫一個ASP:GridView控件與查詢的結果。我的查詢,有如果「san_proposta.credenciada_id」列在anothers行價值10等於計數特定STATUS_ID的ocurrences數量IF「san_proposta.credenciada_id」的列值10的不同,我需要算具有「credenciada_id」特定STATUS_ID的所有ocurrences等於10邏輯特定計數

我想後續的代碼,但我不知道該怎麼做這個細節計數。

SELECT DISTINCT San_Proposta.Imovel_Id, San_Logradouro.Descricao, San_Endereco.Logradouro, San_Imovel.Numero, San_TipoComplemento.Descricao AS Expr1, 
San_Imovel.Complemento, San_Imovel.TipoDsc1, San_Transacao.TransacaoSigla, San_Credenciada.Apelido, San_Transacao.Transacao_ID, COUNT(San_Proposta.StatusProposta_Id) AS NumeroProposta 
FROM San_Proposta 
JOIN San_Imovel 
ON San_Proposta.Imovel_Id = San_Imovel.Imovel_Id 
JOIN San_Endereco 
ON San_Imovel.Endereco_Id = San_Endereco.Endereco_Id 
JOIN San_Logradouro 
ON San_Endereco.Logradouro_Id = San_Logradouro.Logradouro_Id 
JOIN San_TipoComplemento 
ON San_Imovel.TipoComplemento_Id = San_TipoComplemento.TipoComplemento_Id 
JOIN San_Transacao 
ON San_Imovel.Transacao_ID = San_Transacao.Transacao_ID 
JOIN San_Credenciada 
ON San_Imovel.Credenciada_Id = San_Credenciada.Credenciada_Id 
WHERE (San_Imovel.Credenciada_Id = 10 OR San_Proposta.Credenciada_Id = 10) 
GROUP BY San_Proposta.Imovel_Id, San_Logradouro.Descricao, San_Endereco.Logradouro, San_Imovel.Numero, 
San_TipoComplemento.Descricao, San_Imovel.Complemento, San_Imovel.TipoDsc1, San_Transacao.TransacaoSigla, 
San_Credenciada.Apelido, San_Transacao.Transacao_ID, San_Proposta.StatusProposta_Id, 
San_Proposta.Credenciada_Id, San_Imovel.Credenciada_Id 
ORDER BY San_Proposta.Imovel_Id DESC 
+0

請顯示樣本數據和期望的結果。逆向工程加上有'DISTINCT','GROUP BY'和'COUNT'是非常繁重的查詢詞的問題。 – 2012-02-08 19:21:28

回答

2

根據你說的話(如果我正確地解釋你),它看起來像

COUNT(CASE WHEN San_Proposta.credenciada_id = 10 THEN San_Proposta.StatusProposta_Id ELSE NULL END) 

會爲你的工作數量。

+0

只是一種風格的東西真的,但我會做SUM(CASE WHEN ID = 10,則1 ELSE 0 END)。 – Andrew 2012-02-08 19:45:01

+0

沒有想到那個。我會記住它。我喜歡CASE聲明:-) – 2012-02-08 22:17:07