我正在处理查询以获得每个产品的1row但问题是有多个记录,其中包含1个产品的属性。
TABLE PRODUCTS_DATA
NAME : DESC. | ID|FIELD1|FIELD2|FIELD3|FIELD4|
Row 1:PRODUCT1 | 1 | 200 | high | | |
Row 2:PRODUCT1 | 2 | 10 | | low | |
Row 3:PRODUCT1 | 3 | | | | 10 |
现在我想获得一个查询,该查询只显示包含所有这些属性的一条记录。
第1行:PRODUCT1|200|10|HIGH|LOW|10
因为
row 1 | id1 | field 1 contains length data row 2 | id2 | field 1 contains amount data
世界上怎么可能得到这样的结果?
答案 0 :(得分:1)
我想你现在会得到你的解决方案,亲爱的......
SELECT
SS.[DESC],
(SELECT '|' + US.FIELD1
FROM XYZ US
WHERE US.[DESC] = SS.[DESC]
FOR XML PATH('')) [FIELD1],
(SELECT '|' + US.FIELD2
FROM XYZ US
WHERE US.[DESC] = SS.[DESC]
FOR XML PATH('')) [FIELD2],
(SELECT '|' + US.FIELD3
FROM XYZ US
WHERE US.[DESC] = SS.[DESC]
FOR XML PATH('')) [FIELD3],
(SELECT '|' + US.FIELD4
FROM XYZ US
WHERE US.[DESC] = SS.[DESC]
FOR XML PATH('')) [FIELD4]
FROM XYZ SS
GROUP BY SS.[DESC]
ORDER BY 1
答案 1 :(得分:0)
您需要注意两个“field1”列的语义。您将在示例结果中显示两者。据推测,你可能最终得到每一行的四个字段中的每一个数据,因此具有重复列名称的长度变化很大,这似乎对我不利。 (或者您需要修复插入数据的任何内容以使用真正的主键!)
答案 2 :(得分:0)
请尝试此操作,假设PRODUCTS_DATA.PRODUCT_DESC列提供产品说明(DESC。):
SELECT PRODUCT_DESC,MAX(FIELD1),MAX(FIELD2),MAX(FIELD3),MAX(FIELD4) FROM PRODUCTS_DATA
GROUP BY PRODUCT_DESC;