如何基于其他列名创建派生列

时间:2014-05-02 18:11:38

标签: sql sql-server calculated-columns

我有两张桌子。一个表的产品信息包含ProdNum列,第二个表包含所有相关的产品文档。那些prodcut文档名称格式是这样的:ProdNumxxxx.pd所以所有文件'五个第一个数字与ProdNum相关,然后它有字母和其他数字。我需要加入这两个表来查找与产品编号相关的文档。现在我无法在ProdNum和ProdFile上加入它,因为它们显然不匹配。我正在考虑创建另一个列,它将获取ProdFile名称的前五个字符,然后在前五个字符上创建一个列,这样我可以在其上加入以匹配ProdNum。我完全不知道如何做到这一点。有什么想法/意见吗?

1 个答案:

答案 0 :(得分:0)

以下是一个可用于处理少于5个数字的文件名的查询:

select 
    ProdFileInfo.* 
FROM ProdFileInfo 
INNER JOIN ProdInfo 
ON ProdInfo.ProdNum = (CASE 
                           WHEN LEN(ProdFileInfo.ProdFile) < 5 THEN CAST(SUBSTRING(ProdFileInfo.ProdFile, 1, LEAST(5) AS decimal)
                           ELSE CAST(SUBSTRING(ProdFileInfo.ProdFile, 1, 5) AS decimal)
                       END);