Sql &引用;uniqueidentifier与int“不兼容”声明;“唯一标识符”;到处

Sql &引用;uniqueidentifier与int“不兼容”声明;“唯一标识符”;到处,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试创建此表,但收到错误“uniqueidentifier与int不兼容” DECLARE @LastFinancialWeek date SET @LastFinancialWeek = '2020-11-06' CREATE TABLE #DistinctBookings ( BookerCustomerKey INT NOT NULL, CustomerID UNIQUEIDENTIFIER NOT NULL, HotelKey INT NULL,

我正在尝试创建此表,但收到错误“uniqueidentifier与int不兼容”

DECLARE @LastFinancialWeek date
SET @LastFinancialWeek = '2020-11-06'

CREATE TABLE #DistinctBookings
(
    BookerCustomerKey INT NOT NULL,
    CustomerID UNIQUEIDENTIFIER NOT NULL,
    HotelKey INT NULL,
    ReservationNumber INT NULL,
    PostImpressionReservationDate DATE NULL
)

INSERT INTO #DistinctBookings
SELECT DISTINCT 
    DBL.BookerCustomerKey
    , DDC.CustomerId
    , DBL.HotelKey
    , DBL.ReservationNumber
    , DBL.ReservationDate AS PostImpressionReservationDate
FROM fact.DailyBookingsLatest DBL
     join Dim.Customer DDC on BookerCustomerKey = DDC.CustomerKey
     -- change reservation date here to start of financial week
WHERE ReservationDate >= @LastFinancialWeek

[CustomerID]在DDC中声明为Uniqueidentifier。其他数据类型都与表中的数据类型(DDC和DBL)匹配。我使用[CustomerID]创建了其他表,但没有问题,因此我不确定发生了什么。

因此,出现问题的原因有两个:

  • SELECT语句中的列具有不同的数据类型,然后新建了#DistinctBookings表
  • 联接中使用的列不具有相同的数据类型,因此无法进行隐式转换
最后,当您尝试执行查询时,会收到一条错误消息:
操作数类型冲突:uniqueidentifier与int
不兼容

复制步骤:

  • 尝试在不手动输入的情况下执行SELECT*语句,并删除上面的INSERT INTO语句(若有效),问题是连接表
  • 保留SELECT*,并尝试逐条注释join,以查看隐式转换中是否仍存在错误

通过这些步骤,您将很容易找到未来的问题所在。

DDC.CustomerKey的数据类型是什么??是INT吗?如果没有,请告诉我们
[fact].[DailyBookingsLatest]
[Dim].[Customer]
的定义。CustomerKey是数据类型INT[fact].[DailyBookingsLatest]和[Dim].[Customer]是表库中的表(我尚未设置的表)。你要找的到底是什么?我要找的正是
[fact].[DailyBookingsLatest]
[Dim].[Customer]
的定义。您知道,如果您在SSMS中右键单击它们并选择“脚本创建到新窗口”,您会得到什么?谢谢-这非常有用!我能够选择没有问题,所以这告诉我问题在于加入。我认为问题是因为我没有将连接指向正确的客户密钥。