我试图计算表中的行数,并将结果输出到列中。计算特定数据中给定的行数,然后将结果显示在列中。有人可以帮我吗?感谢您的帮助。
下面是我的代码:
SELECT DISTINCT BOM.STYLE_ID,
BOM.SEASON_ID,
BOM.Ad_compo_desc,
BOM.CONTENT_CLASS,
COUNT(CASE
WHEN BOM.CONTENT_CLASS = 'ART'
AND BOM.Ad_compo_desc LIKE '%emb%' THEN
(SELECT COUNT(BOM.Ad_compo_desc))
END) AS EMBRO,
COUNT(CASE
WHEN BOM.CONTENT_CLASS = 'ART'
AND BOM.Ad_compo_desc LIKE '%print%' THEN
(SELECT COUNT(BOM.Ad_compo_desc))
END) AS PRINTING
FROM IPLEXSTY_AD_BOM_DTL BOM
WHERE CONTENT_CLASS = 'ART' --AND BOM.Ad_compo_desc IS NOT NULL
GROUP BY BOM.STYLE_ID,
BOM.SEASON_ID,
BOM.CONTENT_CLASS,
BOM.Ad_compo_desc,
BOM.CONTENT_CLASS
这给了我一个错误:
无法对包含以下内容的表达式执行聚合函数 聚合或子查询
答案 0 :(得分:0)
您要在
下面写点什么吗?logger
在您的查询中,我发现您使用了$('#searchfield').quicksearch('.views-column .views-field-field-soktaggar', {
'delay': 100,
'selector': 'div.searchtags',
'loader': 'span.loading',
'noResults': '#noresults',
'bind': 'keyup',
'show': function () {
$(this).parent('.views-column').removeClass('hide');
$(this).parent('.views-column').addClass('show');
},
'hide': function () {
$(this).parent('.views-column').removeClass('show');
$(this).parent('.views-column').addClass('hide');
},
'prepareQuery': function (val) {
// turn query into array in order to allow sorting
var q = String(val).match(/("[^"]+"|[^"\s]+)/g);
// sort the tags in the query in the same order as in the reference array
var reference_array = [ 'ir', 'lowtemp', 'hightemp', 'logger', 'tek', 'tet', 'tes', 'tej', 'pt100', 'ntc', 'livs', 'fastighet' ];
if(q != null){
var result = q.sort(function(a, b) {
return reference_array.indexOf(a) - reference_array.indexOf(b);
});
var str = result.join(' ');
}
return new RegExp(str, "i");
},
'testQuery': function (query, txt, _row) {
// remove tags in txt that are not used in query
if(txt != ''){ // only process items with tags
// turn txt (tags from items) into array
var t = String(txt).match(/("[^"]+"|[^"\s]+)/g);
// remove leading '/' and trailing '/i' in query
var str = String(query).replace(/^\/|\/i$/g, '');
// turn query into array
var q = String(str).match(/("[^"]+"|[^"\s]+)/g);
// only show matching tags in txt, otherwise matching is not always possible
var res = t.filter(element => q.includes(element));
//turn tags array into string
var _txt = res.join(' ');
// use this alternative tag string from items
return query.test(_txt);
}
return query.test(txt);
}
});
,这是不必要的,因为
您使用聚合函数。而您在else子句中尝试的内容不清楚
答案 1 :(得分:0)
我相信您想要这样的东西:
SELECT BOM.STYLE_ID, BOM.SEASON_ID,
SUM(CASE WHEN BOM.Ad_compo_desc LIKE '%emb%' THEN 1 ELSE 0 END) AS EMBRO,
SUM(CASE WHEN BOM.Ad_compo_desc LIKE '%print%' THEN 1 ELSE 0 END) AS PRINTING
FROM IPLEXSTY_AD_BOM_DTL BOM
WHERE CONTENT_CLASS = 'ART' --AND BOM.Ad_compo_desc IS NOT NULL
GROUP BY BOM.STYLE_ID, BOM.SEASON_ID;
请注意,SELECT
和GROUP BY
都删除了不必要的列。同样,WHERE
子句过滤掉'ART'
以外的行; CASE
中不需要过滤。