0

早上好,

我对这个查询有疑问:

SELECT  
    P.txt_nome AS Pergunta,   
    IP.nome AS Resposta,   
    COUNT(*) AS Qtd   
FROM  
    tb_resposta_formulario RF   
    INNER JOIN formularios F ON  
        F.id_formulario = RF.id_formulario   
    INNER JOIN tb_pergunta P ON  
        P.id_pergunta = RF.id_pergunta   
    INNER JOIN tb_resposta_formulario_combo RFC ON  
        RFC.id_resposta_formulario = RF.id_resposta_formulario   
    INNER JOIN itens_perguntas IP ON  
        IP.id_item_pergunta = RFC.id_item_pergunta   
WHERE  
    RF.id_formulario = 2   
GROUP BY    
    P.txt_nome,   
    IP.nome   

这是此查询的实际结果:

|佩贡塔| 回复 |Qtd|
|产品 |组合 1MB | 3 |
|产品 |组合 2MB | 5 |
|产品 |组合 4MB | 1 |
|产品 |组合 6MB | 1 |
|产品 |组合 8MB | 4 |
|地区 |MG | 3 |
|地区 |公关 | 2 |
|地区 |RJ | 3 |
|地区 |SC | 1 |
|地区 |SP | 5 |

这些是我所期待的结果:

|产品 | 地区 |Qtd|
|组合1MB | 名爵 | 3 |
|组合2MB | SP | 5 |
|组合4MB | SC | 1 |
|组合6MB | RJ | 1 |
|组合 8MB | 公关 | 2 |

我正在使用 PIVOT 和 UNPIVOT 运算符,但结果并不令人满意。

以前有人遇到过这种情况吗?你有什么可以提供的见解吗?

我已经分析了这些链接:

阿特,佩莱格里尼

4

1 回答 1

2

“显而易见”的答案是:因为查询不正确。我们真的对表结构和您想要实现的目标一无所知。

关于查询中的至少一个非常基本的问题:您期望|Produto | Região |Qtd|响应中的列,但查询明确选择列Pergunta,RepostaQtd,这与您得到的结果一致。

您对 SQL 的了解程度如何?阅读介绍性文本可能是值得的。我建议是一个很好的介绍。(使用Oracle,但原理相同)

于 2009-01-27T13:47:35.877 回答