在我的数据库中寻找有关特定情况的建议...
现在,我有一个数据库,该数据库的查询链接到源数据表。在查询中,我有一个表,其中包含组ID,子组ID及其对应的状态。它通过组ID链接到源数据,并基于此拉动状态。
我想要做的是,如果子组ID包含一个关键字,比如说“狗”,而不是通过组ID提取状态,而是通过子组ID提取状态。
我尝试使用iif语句并为子组ID设置一个独立的查询,但是我得到了空值。
在下面的示例中,记录1和4将检索CA和WI。记录2和3,因为描述中带有“ Dog”,所以将检索NY。
我的查询是这样组织的
Group ID Subgroup ID State
1 1000067 Omega 541111 Aplha
2 1000056 Epsilon 542222 Bravo Dog
3 2000653 Gamma 546066 Echo Dog
4 2000654 Theta 968886 Charlie
&参考表如下所示,
ID
1000067 Omega CA
1000056 Epsilon FL
2000653 Gamma TX
2000654 Theta WI
541111 Alpha CA
542222 Bravo Dog NY
546066 Echo Dog NY
968886 Charlie FL
非常感谢您对最佳方法的任何帮助或想法!
本质上,您要执行的是运行两个稍有不同的查询-一个“狗”查询和一个“非狗”查询-并合并结果。一个UNION查询可以做到这一点。与我们的主表[dogMain]
Record_ID Group_ID Subgroup_ID
--------- --------------- -----------------
1 1000067 Omega 541111 Alpha
2 1000056 Epsilon 542222 Bravo Dog
3 2000653 Gamma 546066 Echo Dog
4 2000654 Theta 968886 Charlie
和我们的参考表[dogRef]
ID State
----------------- -----
1000067 Omega CA
1000056 Epsilon FL
2000653 Gamma TX
2000654 Theta WI
541111 Alpha CA
542222 Bravo Dog NY
546066 Echo Dog NY
968886 Charlie FL
查询
SELECT dogMain.Record_ID, dogRef.State
FROM dogMain INNER JOIN dogRef ON dogRef.ID = dogMain.Group_ID
WHERE dogMain.Subgroup_ID NOT LIKE '*dog'
UNION ALL
SELECT dogMain.Record_ID, dogRef.State
FROM dogMain INNER JOIN dogRef ON dogRef.ID = dogMain.Subgroup_ID
WHERE dogMain.Subgroup_ID LIKE '*dog'
ORDER BY 1
退货
Record_ID State
--------- -----
1 CA
2 NY
3 NY
4 WI
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句