gpt4 book ai didi

sql - 如何使用创建的列作为 JOIN 参数 SQL 查询

转载 作者:行者123 更新时间:2023-12-03 23:34:37 25 4
gpt4 key购买 nike

我有 3 个要加入的数据表( TEXTDATA, STOREDATA, SALESDATA )。我的 TEXTDATA 在列中有一个名称字符串,因此创建了一个子字符串来查找它。

然后我尝试使用新形成的字符串( name )作为加入 SALESDATA 表的基础。

这是我的代码

SELECT b.*,
a.text,
a.textname,
SUBSTRING(a.[textname], CHARINDEX('/ ', a.[textname]) + 1, 11) AS NAME,
c.[Sales],
c.[Customer],
c.[Class]
FROM [dbo].[TEXTDATA] a
INNER JOIN [dbo].[STOREDATA] b
ON a.[ID_TEXTDATA] = b.[ID_STOREDATA]
LEFT JOIN [dbo].[SALESDATA] c
ON NAME = c.FirstName

随着错误说 Invalid column name 'name'
关于如何引用稍后在查询中创建的新列的任何想法?

非常感谢!

最佳答案

最简单的选择就是在 LEFT JOIN 的 ON 子句中使用相同的公式:

LEFT JOIN [dbo].[SALESDATA] c
ON SUBSTRING(a.[textname],CHARINDEX('/ ',a.[textname])+1,11) = c.FirstName

或者您可以将公式放在 TEXTDATA 表的 CTE 抽象中:
;with cte AS (
SELECT [ID_TEXTDATA], text, textname, SUBSTRING(a.[textname],CHARINDEX('/ ',a.[textname])+1,11) as name
From [dbo].[TEXTDATA] a
)
SELECT b.*
,cte.text
,cte.textname
,cte.name
,c.[Sales]
,c.[Customer]
,c.[Class]
From
cte
INNER JOIN [dbo].[STOREDATA] b
on cte.[ID_TEXTDATA] = b.[ID_STOREDATA]
LEFT JOIN [dbo].[SALESDATA] c
on cte.name = c.FirstName

关于sql - 如何使用创建的列作为 JOIN 参数 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61765980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com