我有一个包含记录和数据的表(master_tbl)和一个描述哪些字段需要数据的表(lookup_tbl)。
我正在尝试将代码字段作为键加入,其他字段具有相同的名称。
请查看示例表格的图片以及预期结果之前/之后。 http://tinypic.com/r/kf31ci/5
出于某种原因,我无法弄清楚这一点。它真的很容易,还是我应该在VB.NET中使用它?
答案 0 :(得分:1)
假设您的lookup_tbl包含位而不是字母Y / N(因此Y = 1,N = 0),您可以执行以下操作。
注意:从您发布的图片中可以看出,如果查询表中的reqd为N,那么该行将始终无效,因此我已在下面的CASE语句中明确地执行了此操作。
SELECT
mt.tag,
mt.code,
lt.reqd,
mt.color,
mt.fruit
CASE
WHEN lt.reqd = 0 THEN 0
WHEN ISNULL(NULLIF(mt.color, ''),0) = lt.color AND ISNULL(NULLIF(mt.fruit, ''), 0) = lt.fruit THEN 1
ELSE 0
END AS valid
FROM master_tbl AS mt
INNER JOIN lookup_tbl AS lt ON mt.code = lt.code