0

嗨,我正在处理一个查询以获取每个产品的 1row,但问题是有多个记录具有 1 个产品的属性。

表产品_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

因为

第 1 行 | id1 | 字段 1 包含长度数据
第 2 行 | id2 | 字段 1 包含金额数据

世界上怎么可能得到这样的结果?

4

3 回答 3

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
于 2013-10-08T10:32:21.133 回答
0

您需要注意两个“field1”列的语义。您在示例结果中显示了两者。据推测,您最终可能会在每行的四个字段中的每个字段中得到数据,因此会产生一个长度非常可变且列名重复的结果,这对我来说似乎很糟糕。(或者您需要修复插入数据的任何内容以使用真正的主键!)

于 2013-10-08T10:08:05.220 回答
0

请试试这个,假设 PRODUCTS_DATA.PRODUCT_DESC 列给出了产品描述 (DESC.):

SELECT PRODUCT_DESC,MAX(FIELD1),MAX(FIELD2),MAX(FIELD3),MAX(FIELD4) FROM PRODUCTS_DATA
GROUP BY PRODUCT_DESC;
于 2013-10-08T10:08:45.067 回答