【发布时间】:2018-09-25 15:26:35
【问题描述】:
出现错误,我确定它与语法有关。
DECLARE @Rank AS INT = 0;
SELECT
asn_key,
asn_code,
asn_name,
asn_eweb_description_ext,
@Rank = CASE
WHEN asn_name = 'AONE' THEN 1
WHEN asn_name = 'ACHI' THEN 1
WHEN asn_name = 'ATLARGE' THEN 1
WHEN asn_name = 'IFD' THEN 1
ELSE 0
END AS ASN_Rank
FROM
mb_association
JOIN
mb_association_ext (nolock) ON asn_key = asn_key_ext
WHERE
asn_eweb_description_ext IS NOT NULL
ORDER BY
ASN_Rank ASC
我需要对我的关联进行“分组”。如果它不是列出的那些关联之一,那么它需要按 ASC 顺序首先列出,否则我需要它按 ASC 顺序最后列出。看起来它告诉我我有一个语法错误,但我不确定它为什么给我这个错误。我没有看到代码有任何问题,并且我已经查看了类似的代码。
编辑: 我试图以不同的方向接近它,但又遇到了另一个错误。我对分组条款不是很好。
新代码:
select asn_key, asn_code, asn_name, asn_eweb_description_ext
from mb_association join
mb_association_ext (nolock)
on asn_key = asn_key_ext
where asn_eweb_description_ext is not null
--order by (CASE WHEN asn_name in ('AONE', 'ACHI', 'ATLARGE', 'IFD') then 1 else 0 end);
GROUP BY (CASE WHEN asn_name in ('AONE', 'ACHI', 'ATLARGE', 'IFD') then 1 else 0 end);
错误: 消息 8120,第 16 级,状态 1,第 1 行 列 'mb_association.asn_key' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
【问题讨论】:
-
请用您正在使用的数据库标记您的问题。
-
您想用@Rank 捕获什么 - 来自特定行的值?哪一行?
标签: sql sql-server