早上好,
我对此查询有疑问:
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
这是此查询的实际结果:
| Pergunta | Resposta | Qtd |
| Produto |组合1MB | 3 |
| Produto |组合2MB | 5 |
| Produto |组合4MB | 1 |
| Produto |组合6MB | 1 |
| Produto |组合8MB | 4 |
|Região| MG | 3 |
|Região| PR | 2 |
|Região| RJ | 3 |
|Região| SC | 1 |
|Região| SP | 5 |
这些是我期待的结果:
|产品| Região| Qtd |
|组合1MB | MG | 3 |
|组合2MB | SP | 5 |
|组合4MB | SC | 1 |
|组合6MB | RJ | 1 |
|组合8MB |公关| 2 |
我正在使用PIVOT和UNPIVOT操作符,但结果并不令人满意。
之前有没有人遇到过这种情况?你有什么见解可以提供吗?
我已经分析了这些链接:
ATT, Pelegrini
答案 0 :(得分:2)
“明显”的答案是:因为查询不正确。我们对表结构以及您想要实现的目标一无所知。
关于查询中至少有一个非常基本的问题:您希望回复中的列|Produto | Região |Qtd|
,但查询会明确选择列Pergunta
,Reposta
和{{ 1}},这与你得到的结果一致。
你对SQL的熟悉程度如何?阅读介绍性文本可能是值得的。我建议this作为一个很好的介绍。 (使用Oracle,但原则是相同的)