带有布尔运算符的SQL CASE语句
见声明:带有布尔运算符的SQL CASE语句,sql,sql-server,case,Sql,Sql Server,Case,见声明: SELECT t1.region, Count(t1.orders) AS orders, CASE t1.week WHEN < '5' THEN 'APR' WHEN < '10' THEN 'MAY' WHEN < '14' THEN 'JUN'
SELECT t1.region,
Count(t1.orders) AS orders,
CASE t1.week
WHEN < '5' THEN 'APR'
WHEN < '10' THEN 'MAY'
WHEN < '14' THEN 'JUN'
WHEN < '19' THEN 'JUL'
WHEN < '23' THEN 'AUG'
WHEN < '27' THEN 'SEP'
WHEN < '32' THEN 'OCT'
WHEN < '36' THEN 'NOV'
WHEN < '40' THEN 'DEC'
WHEN < '45' THEN 'JAN'
WHEN < '49' THEN 'FEB'
WHEN < '53' THEN 'MAR'
END AS month,
dbo.inf_dates.months
FROM dbo.[NonVoice Weekly_InflowCOMCAN] AS t1
INNER JOIN dbo.inf_dates
ON t1.week = dbo.inf_dates.fin_wk
WHERE notes = 'Weekly COMPLETED'
AND ([2MB/sub]) = 'ETH'
AND dbo.inf_dates.date > CONVERT(datetime, '2017-04-03 00:00:00', 102)
GROUP BY t1.region
,dbo.inf_dates.months
选择t1.region,
将(t1.订单)计算为订单,
病例t1.1周
当这是正确的格式时,将varchar
与
CONVERT(日期时间,'2017-04-03 00:00:00',102)
按区域分组
,dbo.inf_dates.months
您需要按案例语句分组。只需将case语句复制到分组部分。case语句上的代码是否正确?我希望您知道月份边界与周边界不对齐:一周可能在两个不同的月份中。此外,随着时间的推移,它会发生轻微的变化。尝试格式化代码,使其更易于阅读,这将帮助您获得更多答案。在比较字符串时,您必须小心。它逐字比较它们。例如,您认为此查询的结果将是:选择case when'10'<'5',然后选择'small'else'等于或大于'end
。因此,您应该比较强制转换或转换为int值。
SELECT t1.region,
Count(t1.orders) AS orders,
CASE
WHEN t1.week < 5 THEN 'APR'
WHEN t1.week < 10 THEN 'MAY'
WHEN t1.week < 14 THEN 'JUN'
WHEN t1.week < 19 THEN 'JUL'
WHEN t1.week < 23 THEN 'AUG'
WHEN t1.week < 27 THEN 'SEP'
WHEN t1.week < 32 THEN 'OCT'
WHEN t1.week < 36 THEN 'NOV'
WHEN t1.week < 40 THEN 'DEC'
WHEN t1.week < 45 THEN 'JAN'
WHEN t1.week < 49 THEN 'FEB'
WHEN t1.week < 53 THEN 'MAR'
ELSE 'DEFAULT VALUE'
END AS month,
dbo.inf_dates.months
FROM dbo.[NonVoice Weekly_InflowCOMCAN] AS t1
INNER JOIN dbo.inf_dates
ON t1.week = dbo.inf_dates.fin_wk
WHERE notes = 'Weekly COMPLETED'
AND [2MB/sub]) = 'ETH'
AND dbo.inf_dates.date > CONVERT(datetime, '2017-04-03 00:00:00', 102)
GROUP BY t1.region
,dbo.inf_dates.months