所以我使用Date_Year和Date_month列收集了3个月的间隔但有一些问题
例如,第一组是2016年10月至12月,这很好。第二组是我在2016年11月至12月以及2017年1月遇到麻烦的那一组。
以下是示例代码:
SELECT
[2016_Oct_Dec] = SUM(CASE WHEN date_year = 2016 AND date_month IN
(10,11,12) THEN Sales_amt END )
, [2016/17_Nov_Jan] = SUM(CASE WHEN (date_year = 2016 AND date_month IN
(11,12)) AND ((date_year = 2017 AND date_month = 1))
THEN Sales_amt END )
From Sales
我试图创造两个条件(2016年11月至12月)和(2017年1月),但没有运气。
任何帮助表示感谢。
答案 0 :(得分:4)
date_year
不能是2016
和2017
。
尝试使用OR
代替AND
:
SUM(CASE WHEN (date_year = 2016 AND date_month IN
(11,12)) OR (date_year = 2017 AND date_month = 1)
THEN Sales_amt END )
这是[DEMO]
测试设置:
WITH Sales AS(
SELECT *
FROM (VALUES ('2016','08',100),
('2016','10',100), --Capture in 1st CASE
('2016','11',100), --Capture in 1st CASE --Capture in 2nd CASE
('2016','12',100), --Capture in 1st CASE --Capture in 2nd CASE
('2017','1',100), --Capture in 2nd CASE
('2017','1',100), --Capture in 2nd CASE
('2017','1',100), --Capture in 2nd CASE
('2018','2',100)) T(date_year, date_month, sales_amt))
--Expect 300, 500
--Instead use OR
SELECT
[2016_Oct_Dec] = SUM(CASE WHEN date_year = 2016 AND date_month IN
(10,11,12) THEN Sales_amt END )
, [2016/17_Nov_Jan] = SUM(CASE WHEN (date_year = 2016 AND date_month IN
(11,12)) OR ((date_year = 2017 AND date_month = 1))
THEN Sales_amt END )
From Sales
答案 1 :(得分:1)
SELECT
[2016_Oct_Dec] = SUM(CASE WHEN date_year = 2016 AND date_month IN
(10,11,12) THEN Sales_amt END )
, [2016/17_Nov_Jan] = SUM(CASE WHEN (date_year = 2016 AND date_month IN
(11,12)) OR ((date_year = 2017 AND date_month = 1))
THEN Sales_amt END )
From Sales
date_year不能是2016年和2017年。它应该是2016年或2017年[2016 / 17_Nov_Jan]