如何在一个脚本中将此SQL查询集成到其他计算中?

时间:2016-12-06 16:00:46

标签: sql sql-server-2008

所以我写了以下查询:

SELECT 
Store,
Revenue

  FROM [mydb].[dbo].[orders] as orders

  WHERE 
  order_date BETWEEN '2015-10-26' AND '2015-11-22'
  AND 
  type_desc = 'north'


  AND store_number

  NOT IN(
  SELECT DISTINCT store_number
  FROM [mydb].[dbo].[orders] 
  WHERE 
  order_date BETWEEN '2015-10-26' AND '2015-11-22'
  AND 
  type_desc = 'south')

  GROUP BY 
  Store,
  Revenue

此查询的目的是查找商店出现在北方而非南方的收入。下面的查询工作完美,但我想知道的是我如何制作一个更简洁的查询版本,以便我可以将其他东西集成到其中。我想我几乎想加入其他列来计算事物。所以我的最终结果中会有多列,例如去年所有商店的收入,今年所有商店的收入,以及南北ETC的收入......

1 个答案:

答案 0 :(得分:0)

您可以使用条件汇总按南北收入对商店进行分类:

SELECT store,
       SUM(CASE WHEN type_desc = 'north' THEN Revenue ELSE 0 END) as north_revenue,
       SUM(CASE WHEN type_desc = 'south' THEN Revenue ELSE 0 END) as south_revenue
FROM [mydb].[dbo].[orders] o
WHERE o.order_date BETWEEN '2015-10-26' AND '2015-11-22'
GROUP BY store;

这似乎是您想要的基本信息。

如果您只想要北方收入且没有南方收入的商店,您可以添加:

HAVING SUM(CASE WHEN type_desc = 'south' THEN Revenue ELSE 0 END) = 0

(注意:如果Revenue可能为否定,那么您可能只想使用THEN 1而不是THEN Revenue计算值。)