TSQL Msg 1013“使用相关名称来区分它们。”

2023-12-11

我看了很多建议,在过去的两个小时里不知道如何解决这个问题。

SET DATEFORMAT DMY

DECLARE @Source DATETIME = '01/01/2001'
DECLARE @Destenaition DATETIME = '01/01/2020'

SELECT ST.[Group],
       ST.Shop,
       SUM(ST.Purchased) AS Total,
       CHG.Charged
FROM   (SELECT Personals.Groups.[Name]      AS 'Group',
               Cards.vPurchases.PersonalID,
               Personals.Registry.[Name],
               SUM(Cards.vPurchases.Ammont) AS Purchased,
               Cards.vPurchases.ShopName    AS Shop
        FROM   Cards.vPurchases
               INNER JOIN Personals.Registry
                 ON Personals.Registry.Id = Cards.vPurchases.PersonalID
               INNER JOIN Personals.Groups
                 ON Personals.Registry.[Group] = Personals.Groups.Id
               INNER JOIN Personals.Groups
                 ON Personals.Groups.Id = CHG.GroupID
        WHERE  Cards.vPurchases.[TimeStamp] >= @Source
               AND Cards.vPurchases.[TimeStamp] <= @Destenaition
        GROUP  BY Cards.vPurchases.PersonalID,
                  Personals.Registry.[Name],
                  Personals.Groups.[Name],
                  Cards.vPurchases.ShopName) ST,
       (SELECT PG.Id                      AS GroupID,
               SUM(Cards.vCharges.Amount) AS Charged
        FROM   Cards.vCharges
               INNER JOIN Personals.Registry
                 ON Personals.Registry.Id = Cards.vCharges.PersonalID
               INNER JOIN Personals.Groups AS PG
                 ON Personals.Registry.[Group] = PG.Id
        WHERE  Cards.vCharges.[TimeStamp] >= @Source
               AND Cards.vCharges.[TimeStamp] <= @Destenaition
        GROUP  BY Personals.Groups.[Name]) AS CHG
GROUP  BY ST.Shop,
          ST.[Group]  

然后我得到这个错误:

消息 1013,级别 16,状态 1,第 6 行 对象“Personals.Groups”和 FROM 子句中的“Personals.Groups”具有相同的公开名称。使用 相关名称来区分它们。

Thanks.


您正在使用该表Personals.Groups在第一个子查询中出现两次。 如果你真的想要这张桌子Personals.Groups您需要为它们提供一个别名,然后在查询的其余部分中使用该别名来代替表名。

INNER JOIN Personals.Groups as PG1

and

INNER JOIN Personals.Groups as PG2

如果您只需要一个,您可以将on只使用一个子句来代替。

INNER JOIN Personals.Groups 
  ON Personals.Registry.[Group] = Personals.Groups.Id and
     Personals.Groups.Id = CHG.GroupID
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TSQL Msg 1013“使用相关名称来区分它们。” 的相关文章

  • 为什么这个 CTE 比使用临时表慢得多?

    自从我们的数据库最近更新以来 我们遇到了一个问题 我进行了此更新 我在这里感到内疚 从那时起 使用的其中一个查询要慢得多 我尝试修改查询以获得更快的结果 并设法使用临时表实现我的目标 这还不错 但我无法理解为什么该解决方案比基于 CTE 的
  • 我的触发器是如何被删除的?

    如果你能弄清楚这一点 那么你就是一位真正的 SQL 大师 这是我见过的最奇怪的事情之一 我已向数据库中的表添加了一个触发器 服务器是 SQL 2008 触发器不会做任何特别棘手的事情 当某些字段发生更改时 只需更改表中的 LastUpdat
  • SQL Server 条件流

    如果我写两个SELECT中的语句IF EXISTS条件与AND这些选择查询之间的子句 即使第一个查询是否都会执行两个查询SELECT返回假 IF EXISTS SELECT AND EXISTS SELECT BEGIN END 在这种情况
  • 实体框架以错误的顺序插入子对象

    Question 为什么 EF 首先在它所依赖的对象 TimesheetActivity 之前插入具有依赖项的子对象 PersonnelWorkRecord 另外我有哪些纠正这个问题的选择 ERD 简化 This is predefined
  • 如何遍历与自身有关系的表?

    我有一个如下表 Node Id Node Name Parent Node Id 1 Root 0 2 Node1 1 3 Node2 1 4 Node3 2 5 Node4 2 6 Node5 5 7 Node6 5 8 Node7 7
  • T-SQL - 将日期时间更改为日期数据类型?

    我有一个专栏BirthDate在使用的表中datetime数据类型 目前 这些值类似于以下格式1987 12 30 00 00 00 000 我想更新该表的所有行 将它们更改为以下格式date数据类型 1987 12 30 我可以运行 SE
  • TSQL 帮助 - 一种获取行第 N 列中的值的方法?

    我希望找到一种方法来获取数据集第 N 列中的值 因此 对于 N 6 我想要 SELECT Column6Value from MyTable where MyTable RowID 14 有没有办法在 SQL Server 2005 中实现
  • 如何使用 SQL 获取数据库中所有表的列表?

    获取 SQL Server 上特定数据库中所有表的名称的最佳方法是什么 SQL Server 2000 2005 2008 2012 2014 2016 2017 或 2019 SELECT FROM INFORMATION SCHEMA
  • IF EXISTS (SELECT 1...) 与 IF EXISTS (SELECT TOP 1 1...)

    这是一个纯粹的学术问题 这两个陈述实际上是相同的吗 IF EXISTS SELECT TOP 1 1 FROM Table1 SELECT 1 ELSE SELECT 0 Versus IF EXISTS SELECT 1 FROM Tab
  • SQL Server 2008 T-SQL UDF 零碎内容

    我试图从一列中取出一个数据字符串 并将其拆分为 SQL Ser 2008 中的几个不同的列 示例 Name Account 445566 0010020056893010445478008 AFD 369 我正在使用借用的空格分隔拆分函数
  • 对存储过程内容的只读访问

    是否可以设置 SQL Server 来为开发人员提供对生产数据库上存储过程内容的只读访问权限 您可以授予他们VIEW DEFINITION这些进程的特权 See here http msdn microsoft com en us libr
  • 在 SQL Server 中创建层次结构

    我有以下格式的数据 Table 1 e id e name e type 1 CBC 2 2 ABC 3 3 N2 1 4 CBC1 3 5 ABC1 3 6 N1 1 Table 2 N ID N Name 3 N2 6 N1 Table
  • 从长到宽 - SQL [重复]

    这个问题在这里已经有答案了 我有一张很长的桌子 例如 Date Person Number 2015 01 03 A 4 2015 01 04 A 2 2015 01 05 A 3 2015 01 03 B 5 2015 01 04 B 6
  • T-SQL中有异或运算符吗?

    这是我的声明 IF UserName IS NULL AND EditorKey IS NULL OR UserName IS NOT NULL AND EditorKey IS NOT NULL BEGIN RAISERROR One o
  • 使用 WHILE 创建虚拟数据

    我尝试使用 a 在表中插入一些虚拟数据WHILE 但它运行得非常非常慢 我在想也许我写的代码不正确 你能看一下并确认一下吗 Insert dummy data DECLARE i int Content int SET i 5001 WHI
  • T-SQL:如何使用 SELECT 创建表?

    在 oracle 中 您可以发出 create table foo as select from bar 等效的 T SQL 语句是什么 您可以使用SELECT INTO http msdn microsoft com en us libr
  • 根据表sql中的行替换字符串中的字符

    我需要用一些映射的字符替换字符串中的字符列表 我有一个表 dbo CharacterMappings 有 2 列 CharacterToFilter 和 ReplacementCharacter 假设这个表中有3条记录 Filter Rep
  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • 正则表达式 '?' 的类似物(前一项可选)在T-SQL中像什么?

    我想知道 是否可以翻译包含 的正则表达式 前面的项目可选 在 T SQL LIKE 模式中 DB 端无需任何操作 例如 31 4 我可以将其分成几个子句 但如果正则表达式包含很多 这不太方便 LIKE不使用正则表达式 并且它使用的模式语言没
  • 拆分列中的字符串并在列中添加值

    我有一个包含几行数据的表 如下所示 16 W 2 Work ALBO 00 Proposal ALxO Amendement 1 20091022 signed pdf 17 W 2 Work ALBO 00 Proposal Level1

随机推荐