【问题标题】:Separate WHERE IN conditions for each column为每列单独的 WHERE IN 条件
【发布时间】:2016-11-05 23:07:23
【问题描述】:

我的product 表如下所示:

id_product   |   product_count  |  product_name  
1            |   10             |  name1
2            |   20             |  name2
3            |   20             |  name3
4            |   52             |  name4
5            |   30             |  name5
6            |   50             |  name6

我想做一个查询,结果是:

 product_group_name   |   product_group_name | product_group_name |...more groups
 30(sum)              |   72(sum)            | 50(sum)            |...more values

其中组将是 id_product,例如 (1,2 OR 3,4 OR 1,4,5),组名将是别名。

这是制作单列的sql代码:

SELECT 
    cast(SUM(product.product_count) as float) as group_name
FROM    
    product
WHERE 
    product.id_product in (608,913,528,529,920,406,407,408,912,919,918,917,924,926,925)

这个查询的结果是:

| group_name |
| 200        |

是否可以添加更多带有组名的列?重要的是它们是列,而不是行。

【问题讨论】:

  • 如果我明白了,是的,你可以..在列后使用 coma(','),..SELECT cast(SUM( product.product_count) as float) as group_name,sum(column2) as group_name2
  • 我认为你必须做以下事情 1).与 product_group 表 2) 进行连接。使用 group_id 进行“分组”并执行 sum() 操作 3)。在上述步骤中获得结果后,您可以使用此处描述的任何方法转置结果 - stackoverflow.com/questions/13372276/…

标签: sql sql-server subquery conditional-statements


【解决方案1】:

我认为PIVOT 可能是您正在寻找的。也检查一下这个question

【讨论】:

    【解决方案2】:

    如果我理解正确,一种方法是条件聚合:

    SELECT 
        cast(SUM(
            CASE WHEN product.id_product in (608,913,528, ... ,924,926,925)
            THEN product.product_count ELSE NULL END) as float) as group_name1
        ,cast(SUM(
            CASE WHEN product.id_product in (1,2,3)
            THEN product.product_count ELSE NULL END) as float) as group_name2
        ,cast(SUM(
            CASE WHEN product.id_product in (4,5)
            THEN product.product_count ELSE NULL END) as float) as group_name3
    FROM
        product
    ;
    

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 2010-11-07
      • 2011-01-29
      • 1970-01-01
      • 2021-10-23
      • 2019-05-12
      • 2020-09-28
      • 1970-01-01
      • 2012-07-07
      相关资源
      最近更新 更多