【发布时间】:2010-07-16 13:21:21
【问题描述】:
我很乐意做这样的事情,但当然要使用有效的语法:)
MIN(CASE WHEN col=2
THEN CASE WHEN answer IS NULL THEN 0 ELSE answer END END)
我试图阻止视图获取 NULL 值并改用零。 这是创建视图的 SELECT 查询:
SELECT result,question_id,
MIN(CASE WHEN col=1
THEN answer
END) AS col1,
MIN(CASE WHEN col=2
THEN answer
END) AS col2,
MIN(CASE WHEN col=3
THEN answer
END) AS col3
FROM answers
GROUP by result,question_id
基本上我得到了一个不错的结果,看起来像这样
result question_id col1 col2 col3
1 2 10 20 70
2 2 80 20 NULL
3 3 0 100 0
我没有任何性能问题,并且原始表会定期更新,这就是为什么我喜欢保留视图而不是 sp。您看到的表格分散了调查概率的调查的关系结构。每行的列必须加起来为 100。如果有人真的确定某事,例如col3 不会发生,他可以在其他表单字段中填写 0 或将该字段留空。表单验证器仅检查所有加起来是否为 100。如果该字段留空,则关系表中没有任何条目,因此分散视图写入 NULL。
我很想让它写一个“0”,但我不知道怎么做!感谢您提前提出任何建议!
【问题讨论】: