我是使用 SQL Server 的新手,我正在尝试将此查询转换为可以在 SQL Server 中使用的查询。我一直在谷歌搜索以找到正确的结构,但我似乎根本看不到任何提到“用户定义变量”的东西。
任何帮助,将不胜感激。
我要实现的目标的概述...
我有 6 列,我需要得到 6 列的中位数,但只有在至少有 4 个响应的情况下。该字段中的可能值为 1-5,其中 0 表示无响应。
SELECT
GCAID,
@countOfValuesGSS1 := (
CASE
WHEN CEQ106 BETWEEN 1 AND 5 THEN 1 ELSE 0 END +
CASE
WHEN CEQ114 BETWEEN 1 AND 5 THEN 1 ELSE 0 END +
CASE
WHEN CEQ123 BETWEEN 1 AND 5 THEN 1 ELSE 0 END +
CASE
WHEN CEQ132 BETWEEN 1 AND 5 THEN 1 ELSE 0 END +
CASE
WHEN CEQ142 BETWEEN 1 AND 5 THEN 1 ELSE 0 END +
CASE WHEN CEQ143 BETWEEN 1 AND 5 THEN 1 ELSE 0 END),
@sumOfValuesGSS1 := (
CASE
WHEN CEQ106 BETWEEN 1 AND 5 THEN CEQ106 ELSE 0 END +
CASE
WHEN CEQ114 BETWEEN 1 AND 5 THEN CEQ114 ELSE 0 END +
CASE
WHEN CEQ123 BETWEEN 1 AND 5 THEN CEQ123 ELSE 0 END +
CASE
WHEN CEQ132 BETWEEN 1 AND 5 THEN CEQ132 ELSE 0 END +
CASE
WHEN CEQ142 BETWEEN 1 AND 5 THEN CEQ142 ELSE 0 END +
CASE
WHEN CEQ143 BETWEEN 1 AND 5 THEN CEQ143 ELSE 0 END),
if(@countOfValuesGSS1 >= 4, ROUND((@sumOfValuesGSS1/@countOfValuesGSS1),2), NULL) AS b_GSSMAJ1,
MAJ1,
FROM
v_ags_all