-3

我对以下陈述有疑问。你能告诉我是什么EMD_1.*吗?

WITH EMD as (
    SELECT     
       ,attribute1
       ,attribute2
       ,attribute3
       ,ROW_NUMBER() OVER (PARTITION BY attribute1
                           ORDER BY attribute3) as _RN
       ,attribute4
       ,attribute5
    FROM         
       table_name1
)
select
    EMD_1.*
    ,isnull(EMD_1.attribute1,'_profitcenter nd') as ProfitCenterName
    ,EMD_1.attribiute2 as PC_ID
FROM 
    EMD as EMD_1
JOIN 
    table_name2
4

5 回答 5

2

它从 EMD_1 别名(EMD 表的别名)中选择所有列。

于 2013-09-05T13:59:31.920 回答
1

EMD_1是 的别名EMDEMD_1.*从 中选择所有列EMD_1

看一下SELECT 子句语法,select 子句中的选择列表可以是以下任意一种:

...
<select_list> ::= 
    { 
      * 
      | { table_name | view_name | table_alias }.* 
      | {
...

所以你可以把*or tablename.*ortable_alias.*

于 2013-09-05T13:59:24.910 回答
1

只是为了澄清一些事情 -EMD_1.*确实意味着“来自 EMD_1 的所有列”,并且在这种情况下 EMD_1 只是 EMD 的别名(显然没有充分的理由)。

但是,这与上述查询中的说法不同。SELECT *如果您使用 SELECT *,那么您将从 EMD_1table_name2 中获取所有列。

这大概就是 SQL 的作者包含 EMD_1 的原因。在 * 之前,因为他们只想要 EMD_1 中的所有列...

于 2013-09-05T14:04:38.407 回答
0

EMD_1.* 只是 EMD_1 表中的所有列。

于 2013-09-05T14:02:58.357 回答
0

EMD_1 是 EMD 的别名,在此特定上下文中,您不需要为该表命名。当您将一个表连接到自身时,为同一个表设置不同的别名变得很重要。

Select t1.*
From table as t1
inner join table t2
   on t1.column = t2.column
于 2013-09-05T14:04:25.423 回答