我有一张这样的表:
07-24 12:20:50.849 16574-16591/com.example.cann W/System.err? org.json.JSONException: Value at headers of type java.lang.String cannot be converted to JSONArray
07-24 12:20:50.852 16574-16591/com.example.cann W/System.err? at org.json.JSON.typeMismatch(JSON.java:100)
07-24 12:20:50.852 16574-16591/com.example.cann W/System.err? at org.json.JSONObject.getJSONArray(JSONObject.java:588)
07-24 12:20:50.853 16574-16591/com.example.cann W/System.err? at com.example.cann.CategoryActivity$LoadComments.doInBackground(CategoryActivity.java:82)
07-24 12:20:50.853 16574-16591/com.example.cann W/System.err? at com.example.cann.CategoryActivity$LoadComments.doInBackground(CategoryActivity.java:61)
但是我想在这样的新表中显示它:
Service_order Part_code1 Part_code2 Part_code3 Part_code4 Part_code5
4182864919 GH82-11218A GH96-09406A GH81-13594A GH02-11552A GH02-11553A
4182868153 GH97-17670B
4182929636 GH97-17260C GH02-10203A
4182953067 GH97-17940C
4182954688 GH82-10555A GH97-17852A GH81-13071A
4182955036 GH97-17940C
我尝试加入和联盟,但它没有给我我想要的结果。 该怎么办?
答案 0 :(得分:2)
在SQL Server中,一种简单的方法是使用APPLY
:
select t.service_order, v.part_code
from t cross apply
(values(Part_code1), (Part_code2), (Part_code3), (Part_code4), (Part_code5)
) v(part_code)
where v.part_code is not null;
在MySQL或SQL Server中,您可以使用union all
:
select t.service_order, part_code1 as part_code from t where part_code1 is not null union all
select t.service_order, part_code2 as part_code from t where part_code2 is not null union all
select t.service_order, part_code3 as part_code from t where part_code3 is not null union all
select t.service_order, part_code4 as part_code from t where part_code4 is not null union all
select t.service_order, part_code5 as part_code from t where part_code5 is not null;
答案 1 :(得分:1)
如果服务订单可以包含多个partCodes,则应该有一个带有复合键的表作为规范化的一部分。 在这种情况下,service_order和partCodes将是每行的唯一键。
使用这样的模式,只需SELECT * FROM [table_name]
,假设您有一个SQL数据库。