Sql 如何正确连接和查询以实现比较

Sql 如何正确连接和查询以实现比较,sql,sql-server,join,case,Sql,Sql Server,Join,Case,我有两张桌子(OITM和artfileStatus)。我想在OITM.ItemCode=artfileStatus.artfilename+'.pdf' 我想查询OITM表以返回该表中所有OITM.ItemCodes的列表。作为附加专栏,我想找出artfileStatus.artfilename+'.pdf' 如果(artfileStatus.artfilename+'.pdf')不存在,我想返回文本“No artwork”。如果(artfileStatus.artfilename+'.pdf'

我有两张桌子(OITM和artfileStatus)。我想在
OITM.ItemCode=artfileStatus.artfilename+'.pdf'

我想查询OITM表以返回该表中所有
OITM.ItemCodes
的列表。作为附加专栏,我想找出
artfileStatus.artfilename+'.pdf'

如果
(artfileStatus.artfilename+'.pdf')
不存在,我想返回文本“No artwork”。如果
(artfileStatus.artfilename+'.pdf')
确实存在,我想返回
(artfileStatus.filelocation)
的值

我不确定要使用的正确连接和/或查询此连接的正确方式。我确信select语句中涉及到CASE,但我发现当
artfileStatus.artfilename+'.pdf'
不存在时,我的查询尝试根本不会返回任何结果

你能帮我指出正确的方向吗?或者根据这些信息提供一个示例解决方案吗?非常感谢

试试这个:

SELECT ItemCode,
       CASE WHEN artfilename IS NULL
       THEN 'NoArtwork'
       ELSE fileLocation
       END
FROM OITM
LEFT OUTER JOIN  artfileStatus ON OITM.ItemCode = SUBSTRING(artfileStatus.artfilename , 1, 6)

您尝试的查询是什么?这是从一个更复杂的查询中简化出来的,但希望与我所问的更简单的版本相匹配,但下面是我尝试的:选择DISTINCT T0。[ItemCode],当t4.artfilename为空时,则“无艺术品”否则t4.filelocation结束为“文件状态”,从OITM T0到T0.U_Status=t1.fldvalue上的内部连接UFD1 t1,t1.tableid='OITM'和t1.fieldid=13到T0.itemcode+'.pdf'=t4.artfilename上的内部连接artfileStatus t4其中,t0.U_状态介于“09”和“18”之间,按t0.ItemCode、t4.ArtFileName分组。如果进行内部联接,则只会返回匹配的记录。如果执行左外部联接,则将使用左表中的所有行,当在右表中找不到匹配项时,将使用空行,因此my(现已删除)和其他答案都使用左联接。当我尝试此查询时,我得到错误:1)。[SQL Server]靠近“”的语法不正确。因此,我将最后一部分更改为“.pdf”,它允许运行查询。然而,虽然它确实返回OITM中的每个ItemCode(正如我所希望的那样),但它错误地为每个项目返回“NoArtwork”。请注意,OITM中的ItemCode看起来像这个“102-13”,而在artfileStatus表中,它看起来像这个“102-13.pdf”,您可以在artfile状态上使用子字符串来获得不带pdf的字符串。我更新了代码,并假设状态将始终包含6个字符。