【发布时间】:2018-02-17 17:38:01
【问题描述】:
我正在尝试创建一个报告,显示按商店位置 (store_ID) 购买的单个商品 (store_Product)。
store_Product 共有 3 种类型:product_A、product_B 和 product_C。 有超过一千个唯一的 store_ID。
我的问题是一些唯一的 store_ID 有多个 store_Products,我需要缩小查询,使其仅返回唯一的 store_ID
这些是条件规则:
如果商店有 product_B 和任何其他产品,则一个唯一的 store_ID 记录会将 product_B 作为 store_Product 值
如果商店有 product_A 和 product_C,则一个唯一的 store_ID 记录会将 product_A 作为 store_Product 值
如果商店只有一条记录,则 store_Product 保持不变。
所以下面的例子解释了我在左边的内容以及我希望它在右边的样子:
我正在使用 SQL Server 2014 在 SSRS 中构建报告。
非常感谢任何帮助!
编辑:到目前为止我所拥有的:
SELECT [store_ID]
,MIN(CASE WHEN store_product = 'product_B' THEN '1_product_B'
WHEN store_product = 'product_A' THEN '2_product_A'
ELSE '3_product_C' END) AS 'Prob_Group'
,CASE
WHEN (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 < '24'
THEN '0 - 24 HRs'
WHEN (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 >= '24'
AND (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 < '48'
THEN '24 - 48 HRs'
WHEN (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 >= '48'
AND (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 < '72'
THEN '48 - 72 HRs'
ELSE 'Over 168 HRs'
END AS 'Hour_Range'
FROM myTable
WHERE *filters*
GROUP BY [store_ID]
,CASE
WHEN (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 < '24'
THEN '0 - 24 HRs'
WHEN (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 >= '24'
AND (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 < '48'
THEN '24 - 48 HRs'
WHEN (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 >= '48'
AND (DATEDIFF(MINUTE, Opened_Time, GETDATE())) * 1.0 / 60 < '72'
THEN '48 - 72 HRs'
ELSE 'Over 168 HRs'
END
ORDER BY [store_ID]
【问题讨论】:
-
我们需要一些细节。这是一个很好的起点。 spaghettidba.com/2015/04/24/…
-
向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example
-
@JuanCarlosOropeza 我已在主帖中添加了我的代码,但下半部分不会保持代码格式。仅当包含小时范围案例语句时,我的示例数据才会返回 store_ID 的副本。我没有测试过,它工作正常。请帮助我朝着正确的方向前进。我将非常感激
-
您尚未添加样本数据、当前和预期输出。在确定我应该得到什么结果之前,我不会再试一次。并正确格式化查询。
-
我可能错了,目前无法测试,但您也许可以添加@JuanCarlosOropeza 在他对 GROUP BY 子句的回答中给出的 CASE 语句。
标签: sql-server reporting-services