【发布时间】:2013-04-19 15:54:57
【问题描述】:
我有 2 个表(OITM 和 artfileStatus)。我想加入他们OITM.ItemCode = artfileStatus.artfilename + ‘.pdf’
我想查询 OITM 表以返回该表中所有 OITM.ItemCodes 的列表。作为附加专栏,我想找出artfileStatus.artfilename + ‘.pdf’中不存在哪些OITM.ItemCodes
如果(artfileStatus.artfilename + ‘.pdf’ ) 不存在,我想返回文本“无艺术品”。如果(artfileStatus.artfilename + ‘.pdf’ ) 确实存在,我想返回(artfileStatus.filelocation) 的值。
我不确定要使用的正确连接和/或查询此连接的正确方法。我确定 CASE 参与了 select 语句,但我发现当 artfileStatus.artfilename + ‘.pdf’ 不存在时,我的查询尝试根本没有返回任何结果。
您能否帮我指明正确的方向或根据此信息提供示例解决方案?非常感谢!
【问题讨论】:
-
你尝试的查询是什么?
-
这是从更复杂的查询中减少的,但希望与我要求的更简单的版本相匹配,但这是我尝试过的:SELECT DISTINCT T0.[ItemCode], CASE WHEN t4.artfilename is null THEN 'No艺术品' ELSE t4.filelocation END as 'File Status' FROM OITM T0 inner join UFD1 t1 on t0.U_status = t1.fldvalue and t1.tableid = 'oitm' and t1.fieldid = 13 INNER JOIN artfileStatus T4 on t0 .itemcode + '.pdf' = t4.artfilename WHERE t0.U_Status between '09' and '18' Group by T0.ItemCode, t4.artfilename
-
如果你做一个内连接,你只会得到匹配的记录。如果您进行左外连接,则将使用左表中的所有行,当在右表中找不到匹配项时,将使用空行,因此我的(现在已删除)和其他答案都使用左加入。
标签: sql sql-server join case