如何将值汇总为ssms中的类别?
SELECT
,[CustomerName]
,[ItemRelation]
,[SaleCount]
,[DocumentNum]
,[DocumentYear]
,[IsPromo]
FROM mytable
田野
,[CustomerName
,[ItemRelation]
,[DocumentNum]
,[DocumentYear]
是分层类别,例如"the shop of horns and hoofs" - "111" - "37" - "2018year"
。[SaleCount]
销售数量。有什么困难。对于每个这样的阶层,都有关于股票[IsPromo]的数据(0-无股票,1是股票),数据样本被截断,仅是示例
[ItemRelation] [SaleCount] IsPromo ,[DocumentNum] [DocumentYear]
11202 8,85947691 0 137 2018
11202 9,450108704 0 137 2018
11202 12,40326767 1 137 2018
11202 25,98779894 1 137 2018
11202 63,19760196 1 137 2018
11203 8,85947691 0 138 2018
11203 9,450108704 0 138 2018
11203 12,40326767 1 138 2018
我们看到了阶层
[ItemRelation], [DocumentNum] [DocumentYear]
11202 137 2018
ispromo的3个和两个零
并按阶层
[ItemRelation], [DocumentNum] [DocumentYear]
11203 138 2018
这里2一零
我该如何编写查询,仅返回ones
for ispromo出现2到4倍(含2到4倍)的“层” ?
我们可以通过对每个层求和IsPromo
,然后仅保留总和在2和4之间(包括2和4)的记录,来返回每个层的所有匹配记录。
SELECT [ItemRelation], [DocumentNum], [DocumentYear] -- and maybe other columns
FROM
(
SELECT *,
SUM(CAST(IsPromo AS INT)) OVER (PARTITION BY ItemRelation, DocumentNum,
DocumentYear) promo_sum
FROM mytable
) t
WHERE t.promo_sum BETWEEN 2 AND 4;
注意:如果您真的只想查看每个匹配的层一次,那么我们可以使用GROUP BY
查询代替。但是,您仍然可以轻松修改上述查询SELECT DISTINCT
以获得此结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句