mysql透视动态表并仅返回count>;0

mysql透视动态表并仅返回count>;0,mysql,count,pivot,case,Mysql,Count,Pivot,Case,我有一个计算案例的查询,我使用它来根据案例分析一些总数。以下是查询: $user_attrib = some_value; $user_size = some_value; $items = [218, 219]; $items = join(",", $items); SELECT owned_items.model_id, Count(owned_items.model_size_id) AS total_owned, makes.make, i

我有一个计算案例的查询,我使用它来根据案例分析一些总数。以下是查询:

$user_attrib = some_value;
$user_size = some_value;
$items = [218, 219];
$items = join(",", $items);


SELECT owned_items.model_id,
       Count(owned_items.model_size_id) AS total_owned,
       makes.make,
       items.model_name,
       items.picture,
       items.color,
       items.material,
       Count(CASE item_sizes.id WHEN '1' THEN item_sizes.id ELSE NULL END) AS '1',
       Count(CASE item_sizes.id WHEN '2' THEN item_sizes.id ELSE NULL END) AS '2',
       Count(CASE item_sizes.id WHEN '3' THEN item_sizes.id ELSE NULL END) AS '3',
       Count(CASE item_sizes.id WHEN '4' THEN item_sizes.id ELSE NULL END) AS '4',
       Count(CASE item_sizes.id WHEN '5' THEN item_sizes.id ELSE NULL END) AS '5',
       Count(CASE item_sizes.id WHEN '6' THEN item_sizes.id ELSE NULL END) AS '6',
       Count(CASE item_sizes.id WHEN '7' THEN item_sizes.id ELSE NULL END) AS '7',
       Count(CASE item_sizes.id WHEN '8' THEN item_sizes.id ELSE NULL END) AS '8',
       Count(CASE item_sizes.id WHEN '9' THEN item_sizes.id ELSE NULL END) AS '9',
       Count(CASE item_sizes.id WHEN '10' THEN item_sizes.id ELSE NULL END) AS '10',
       Count(CASE item_sizes.id WHEN '11' THEN item_sizes.id ELSE NULL END) AS '11',
       Count(CASE item_sizes.id WHEN '12' THEN item_sizes.id ELSE NULL END) AS '12',
       Count(CASE item_sizes.id WHEN '13' THEN item_sizes.id ELSE NULL END) AS '13',
       Count(CASE item_sizes.id WHEN '14' THEN item_sizes.id ELSE NULL END) AS '14',
       Count(CASE item_sizes.id WHEN '15' THEN item_sizes.id ELSE NULL END) AS '15'
FROM   owned_items
       INNER JOIN owned_item_user
               ON owned_items.id = owned_item_user.owned_item_id
       INNER JOIN users
               ON owned_item_user.user_id = users.id
       INNER JOIN item_sizes
               ON owned_items.model_size_id = item_sizes.id
       INNER JOIN items
               ON owned_items.model_id = items.id
       INNER JOIN makes
               ON owned_items.make_id = makes.id      
WHERE  users.attrib_id = $user_attrib
       AND users.size_id = $user_size
       AND owned_items.model_id IN ($items)
GROUP  BY owned_items.model_id
我想概括数据,这样如果我添加第16个案例,我就不必手动添加另一行,我只想返回结果大于0的案例。
在第一部分中,我尝试了这个调整代码,但没有成功。第二部分我尝试将计数(当'1'时为CASE item_size.id,当'1'时为item_size.id,否则为NULL END)设置为'1'>0(等等),但也没有成功

您可以使用Group By+Count

Select item_sizes.id, count(*) from item_sizes where item_sizes.id between 1 and 15 group by item_sizes.id;

当您说
仅返回结果>0的案例时
是指整行吗?或者你指的是那些专栏?另外,如果您有联接/外部联接,则整个查询实际上是相关的。我只想获取数据大于0的数据透视列(“1”、“2…”n”)。我将发布整个查询。我放置了完整的查询。只有这样才能只获取包含数据的列,您需要动态构建查询的计数(大小写)部分。您发布的链接(透视动态表)向您展示了如何执行此操作。您只需对相同的联接使用相同的查询,即可获得有效的
item\u size.id
。您将如何根据链接修改查询?我试过了,但我错了。。。。我正在旋转数据,创建数据库中不存在的列(“1”、“2”、“15”)