-2
我有一個項目由一個基於某個過濾器生成一個表的函數組成。然後,我發現一個問題,即當某個過濾器的某些組合沒有返回任何內容時,因爲它在瀏覽器中呈現的時間少於組合的數量。 爲了實現它,我想給「 - 」標記沒有保存在表中的損失記錄。從SQL查詢生成數據透視表
我的第一種方法是逐個檢查帶過濾器的數組,並且如果條件與'丟失行'匹配,它將推送數組,直到結果中的所有缺失記錄都填充' - '。但是,它會處理時間,因爲最後必須重新排序,然後再構建到想要的表格中。的主表 「A」
示例模式:
amount_of_product, id_product, id_people, id_place.
主鍵列有:
id_product, id_people, id_place.
主表的內容是:
23456, book-a, 1, aa
5678, book-b, 1, cc
2587, book-b, 1, aa
源查詢將如下所示:
select * from A
where
id_product in ('book-a', 'book-b')
and id_people in ('1') and id_place in ('aa', 'bb', 'cc')
order by id_product, id_place
然後,我們希望在表格視圖(html)中顯示所有選定過濾器的所有組合。應該渲染6行,空單元顯示爲"-"
。
樣品結果表:
我能做到這一點有效,還是有什麼方法解決呢?
在此先感謝。
表現出一定的scnreehots,的jsfiddle,代碼,... – DanFromGermany
在Oracle中,你可以使用'pivot':'SELECT * FROM樞軸(SUM(amount_of_product)爲id_place在( 'AA','BB 」, 'CC'))'。 postgresql ['crosstab'](http://www.postgresonline.com/journal/index.php?/archives/14-CrossTab-Queries-in-PostgreSQL-using-tablefunc-contrib.html)函數應該提供類似的功能。 –