我有一个返回一行有大量列的查询。我的查询的顶部看起来像这样:
sum(CASE WHEN status = 'hello' THEN begin ELSE 0 END) hello_begin,
sum(CASE WHEN status = 'hello' THEN middle ELSE 0 END) hello_middle,
sum(CASE WHEN status = 'hello' THEN end ELSE 0 END) hello_end,
sum(CASE WHEN status = 'smile' THEN begin ELSE 0 END) smile_begin,
sum(CASE WHEN status = 'smile' THEN middle ELSE 0 END) smile_middle,
sum(CASE WHEN status = 'smile' THEN end ELSE 0 END) smile_end,
...
...我有10种不同的状态,所以这是30列。我只能写30条陈述。但有没有一种聪明的方法来压缩这个,这样我就不会做出一些愚蠢的复制和粘贴错误?
我在iBatis中这样做并将其返回到一个映射对象,在那里我开始一个非常繁琐且不可扩展的转换,就像地图地图一样。理想的解决方案是跳过必须在Java中执行此操作。