SQL Server创建支持部件级PM组覆盖的产品关联信息查询视图
完整视图创建方案
核心实现逻辑
直接将你计算得到的pm_group作为关联条件,关联GLOBAL_CODE_TABLE表的code_value字段即可,同时视图保留product_id字段方便后续过滤查询。
完整SQL代码
CREATE VIEW vw_product_pm_group_info AS SELECT p.product_id, ISNULL(part.user_def2, m.model_group) AS pm_group, gct.user_def_num1, gct.user_def_num2, gct.user_def_num3 FROM product p INNER JOIN part_model pm ON pm.part_id = p.part_id INNER JOIN part ON part.part_id = p.part_id INNER JOIN model m ON m.model_id = pm.model_id INNER JOIN global_code_table gct ON gct.code_value = ISNULL(part.user_def2, m.model_group)
说明:这里用
ISNULL(part.user_def2, m.model_group)替代你写的CASE语句,逻辑完全一致,写法更简洁。如果你的业务场景中存在pm_group不在GLOBAL_CODE_TABLE中的情况,可以将最后一个INNER JOIN改为LEFT JOIN,避免查询不到对应产品数据。
使用方法
视图创建完成后,你直接用业务软件的简单查询功能过滤product_id即可:
-- 示例:查询product_id=1的PM组关联信息 SELECT * FROM vw_product_pm_group_info WHERE product_id = 1
效果验证
- 查询
product_id=1时,若对应part的user_def2为NULL,会自动取model.model_group=G1关联GLOBAL_CODE_TABLE返回对应数据 - 查询
product_id=2时,若对应part的user_def2=G2,会直接取G2关联GLOBAL_CODE_TABLE返回对应数据
内容的提问来源于stack exchange,提问作者user2014690
相关产品推荐
相关产品推荐

