Sql &引用;uniqueidentifier与int“不兼容”声明;“唯一标识符”;到处
我正在尝试创建此表,但收到错误“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,
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中右键单击它们并选择“脚本创建到新窗口”,您会得到什么?谢谢-这非常有用!我能够选择没有问题,所以这告诉我问题在于加入。我认为问题是因为我没有将连接指向正确的客户密钥。