我有一个查询,起初看起来效果不错,但需要稍作调整。我正好在其中的位置上,因此在进行调整时,我已经完全陷入了思维障碍,所以我将它扔在那里寻求帮助! :)
作为较大的存储过程的一部分,本节转到MarketDataHistory
表中,以获取lastBusnessDay
,lastWeekEnd
(|星期五/工作日)和{{1} }。
我使用lastMonthEnd
来指定一个整数(CASE
的{{1}},1
的{{1}}和{{ 1}},然后选择lastBusinessDay
进行其他操作,这样我们就只能在外部2
上选择lastWeek
。
这看起来很酷,除了我上周在测试中注意到lastWeek和lastMonthEnd都是5月31日,然后我在行的下方缺少值(以后的3个步骤中我们总是需要列)。
3
我会很高兴有人帮助我摆脱思维障碍,哈哈,对我如何应对3个变量中的2个进行调整,这些变量有时是相同的,但始终会检索所有3个变量。
谢谢
Leigh Tilley(TilleyTech Ltd)
答案 0 :(得分:1)
如果期望的结果是当两个条件都成立时,您希望这些行出现两次,那么您想要一个联接,而不是case
。专注于内在的SELECT
:
FROM (SELECT M.*, G.GRP
FROM marketdatahistory AS M
INNER JOIN (
--1 for yesterday, 2 for last week, 3 for last month end
SELECT 1 AS GRP, @lastbusinessday as D UNION ALL
SELECT 2 AS GRP, @lastWeek as D UNION ALL
SELECT 3 AS GRP, @lastMonthEnd as D
) AS G
ON M.DATE >= @lastMonthEnd
AND M.DATE = G.D
) t
由于无论如何您将排除第4组,所以根本就不要定义这些行;这就是为什么我没有选择最内在的原因。