gpt4 book ai didi

tsql - 试图在 case 语句中设置变量。

转载 作者:行者123 更新时间:2023-12-01 00:48:36 26 4
gpt4 key购买 nike

我正在尝试从我们的 ERP 系统的会计年度表中更新日期维度表。如果我运行以下查询:

SELECT fcname FYName
,min(fdstart) YearStart
,max(fdend) YearEnd
,max(fnnumber) PeriodCount
FROM M2MData01.dbo.glrule GLR
GROUP BY fcname

我得到以下数据:

FYName            YearStart                   YearEnd                 PeriodCount
FY 2000 1/1/2000 12:00:00 AM 12/31/2000 12:00:00 AM 12
FY 2001 1/1/2001 12:00:00 AM 12/31/2001 12:00:00 AM 12
FY 2002 1/1/2002 12:00:00 AM 12/31/2002 12:00:00 AM 12
FY 2003 1/1/2003 12:00:00 AM 12/31/2003 12:00:00 AM 12
FY 2004 1/1/2004 12:00:00 AM 12/31/2004 12:00:00 AM 12
FY 2005 1/1/2005 12:00:00 AM 12/31/2005 12:00:00 AM 12
FY 2006 1/1/2006 12:00:00 AM 12/31/2006 12:00:00 AM 12
FY 2007 1/1/2007 12:00:00 AM 12/31/2007 12:00:00 AM 12
FY 2008 1/1/2008 12:00:00 AM 12/31/2008 12:00:00 AM 12
FY 2009 1/1/2009 12:00:00 AM 12/31/2009 12:00:00 AM 12
FY 2010 1/1/2010 12:00:00 AM 12/31/2010 12:00:00 AM 12

在我的例子中,我的公司每年有 12 个时期,大致相当于几个月。基本上,我正在尝试创建一个更新语句来设置将遵循以下逻辑的财政季度:
1. 如果 PeriodCount 能被 4 整除,那么一个季度的周期数就是 PeriodCount/4。
2. 如果 PeriodNumber 在第一季度(在本例中为第 1 至第 3 季度),则 FiscalQuarter =1,对于第 2 至第 4 季度依此类推。

问题是我不能保证每个人都使用 12 个句点,我支持的一些公司使用不同的数字,例如 10。

我开始创建以下选择语句:

    DECLARE @QuarterSize   INT
DECLARE @SemesterSize INT

SELECT TST.Date,
CASE WHEN glr.PeriodCount % 4 = 0 THEN
-- Can Be divided into quarters. Quarter size is PeriodCount/4
set @quartersize = (GLR.PeriodCount/4)

CASE


END

ELSE 0
End
FROM m2mdata01.dbo.AllDates TST
INNER JOIN (
SELECT fcname FYName
,min(fdstart) YearStart
,MAX(fdend) YearEnd
,MAX(fnnumber) PeriodCount
FROM M2MData01.dbo.glrule GLR
GROUP BY fcname ) GLR

ON TST.DATE >= GLR.YearStart AND TST.DATE <= GLR.YearEnd

我可以像这样在 case 语句中设置变量的值吗?完成此任务的最佳方法是什么?我是否被迫使用游标语句并根据上表中的范围检查维度中的每个日期?

最佳答案

不确定您要在此处做什么 - 您可以在 select 子句中的 case 语句之外分配变量。比如

SELECT
SomeCol,
@var = CASE
WHEN condition1 THEN some value
WHEN condition2 THEN other value
END,
OtherCol
FROM
...

请注意,@var 值被设置为在最后一行评估的值。如前所述,我不确定您打算如何使用 @quartersize 变量。如果每一行都需要该值,那么您根本不应该使用变量。

关于tsql - 试图在 case 语句中设置变量。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com