如何在查询中引用别名

2020-08-27 23:23发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如果我在Select子句中为列指定别名,然后又想引用它,并在查询中进一步使用它,例如在" Order By"," Group By"中使用的正确语法是什么? ,"具有"或Select子句中的其他某些操作?

例如,在下面的代码段示例中,我试图按代码长度检查CardCode的分布。 输出应该有多少客户的CardCode长度为2? 3? 4? 5? 等等。但是我想我在"订购依据"子句和"分组依据"子句中使用的语法不正确。

有人可以帮忙吗?

预先感谢

Yaniv

选择
 len(T0。[CardCode])AS N'length'
 ,计数(*)

 从OCRD T0

 哪里
 1 = 1

 按"长度"分组
 按N'length'DESC排序

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如果我在Select子句中为列指定别名,然后又想引用它,并在查询中进一步使用它,例如在" Order By"," Group By"中使用的正确语法是什么? ,"具有"或Select子句中的其他某些操作?

例如,在下面的代码段示例中,我试图按代码长度检查CardCode的分布。 输出应该有多少客户的CardCode长度为2? 3? 4? 5? 等等。但是我想我在"订购依据"子句和"分组依据"子句中使用的语法不正确。

有人可以帮忙吗?

预先感谢

Yaniv

选择
 len(T0。[CardCode])AS N'length'
 ,计数(*)

 从OCRD T0

 哪里
 1 = 1

 按"长度"分组
 按N'length'DESC排序
付费偷看设置
发送
6条回答
Bunny_CDM
1楼-- · 2020-08-27 23:31

这是您达到目标的方式


 选择[长度],COUNT(*)[NoOfCardCodeWithSameLenght]从
 (
 选择
 len(T0。[CardCode])AS [Length]
 从OCRD T0
 哪里
 1 = 1
 T0
 [长度]分组
 按[长度] DESC排序
 
哎,真难
2楼-- · 2020-08-27 23:41

谢谢你们!

我曾经在Teradata上工作过,在这种情况下这种查询是没有问题的,所以我很惊讶SAP使其运行起来如此繁琐。

是否有一种更简单的方法可以在不使用嵌套查询的情况下运行它,而仍然使用简单的命名或编号。 例如,在Teradata中,我只写" Group By 1"。 就这么简单...

谢谢!

小灯塔
3楼-- · 2020-08-27 23:55

select语句的执行顺序如下:

  1. FROM子句
  2. ON子句
  3. OUTER子句
  4. WHERE子句
  5. GROUP BY子句
  6. HAVING 子句
  7. SELECT子句
  8. DISTINCT子句
  9. ORDER BY子句
  10. TOP子句

您会看到group by在选择之前执行,这就是为什么您不能在其中使用别名的原因。

ORDER BY在SELECT之后执行,因此您可以在其中使用别名。 因此,在您的示例中,您应该使用以下查询:

 SELECT
 len(T0。[CardCode])AS长度
 ,计数(*)

 从OCRD T0

 哪里
 1 = 1

 LEN分组(T0。[CardCode])
 ORDER BY length DESC 
Tong__Ming
4楼-- · 2020-08-27 23:48

谢谢Nagarajan! 但是,我想按卡代码的长度而不是卡代码本身的长度进行分组。 在上面的示例查询中,计数(*)始终等于1。

灬番茄
5楼-- · 2020-08-27 23:54

嗨,

尝试这个简单的查询,

 SELECT len(T0。  [CardCode])AS'length',count(*)

 从OCRD T0

 在1 = 1

 T0分组。[CardCode]

 ORDER BY T0。[卡片代码] DESC 
Nir深蓝
6楼-- · 2020-08-27 23:49

嗨,

尝试此查询,

选择长度,总和(计数)

< p>来自

(选择len(T0。[CardCode])AS'length',count(*)as count

从OCRD T0 1 = 1

按T0组。[CardCode] )S

按长度分组

问候

Nagarajan

一周热门 更多>