我正在尝试使用join语句更新表,但它并没有完全解决.我需要能够使用来自不同表的数据在一个条件为真时更新数据库中的某一行.这是我到目前为止所做的,也许我很亲密,有人可以提供一些见解?
UPDATE Project
SET Project.SumAssessments = SUM (Assessment.Amount)
FROM Project
JOIN Assessment ON Project.SumAssessments = SUM (Assessment.Amount)
WHERE Assessment.ProjectCode = @ProjectID
AND Project.ProjectID = @ProjectID
Run Code Online (Sandbox Code Playgroud) 使用SQL Server 2008 ...
我试图按照特定顺序订购我的行时遇到一些麻烦,我希望他们按顺序排序.我发现了一些使用该ORDER BY CASE子句的例子,但我不确定使用这种方法是否会产生我想要的结果,因此我来到了社区!
这就是我所拥有的:
首先,如果存在,我选择与当前年份相同的不同年份:
IF EXISTS(SELECT DISTINCT [Year]
FROM Assessment WHERE ProjectCode = @ProjectCode AND [Year] = DATENAME(YEAR, GETDATE()))
SELECT DISTINCT [Year]
FROM Assessment WHERE ProjectCode = @ProjectCode
Run Code Online (Sandbox Code Playgroud)
但是,我在排序结果时发现了一些困惑.我想将当前年份设置为使用该ORDER BY子句返回的第一行,然后按降序排列其余的返回年份,这是我到目前为止所做的:
ORDER BY (CASE WHEN [Year] = (DATENAME(YEAR, GETDATE())) THEN 1
ELSE 100 END) ASC, [Year] desc
Run Code Online (Sandbox Code Playgroud)
接下来,如果查询中不包含当前年份,请选择每年并按年递减.
ELSE
SELECT DISTINCT [Year]
FROM Assessment WHERE ProjectCode = @ProjectCode
ORDER BY [Year] desc
Run Code Online (Sandbox Code Playgroud)
提前致谢!