将视图中的行合并到新视图中

时间:2017-01-20 08:06:01

标签: merge sql-server-2008-r2

我有7列的视图。 4列包含相同的信息,当一列(这三列中的)包含某些内容(NOT NULL)时,其他三列中的两列包含NULL。专栏" Gewicht,aantal,klant"必须合并为一行,四个第一列包含所有三行中相同的信息。 如何创建一个视图,将这些行合并为一行?

现在的视图看起来像:

> 
Produtielijn                    Datum_tijd              Artikel     PRorder             Gewicht  aantal       klant
Afzaklijn 3 (Groot Loosbroek)   2017-01-16 15:55:04.000 0118903G34  PR0800055654.006    NULL    NULL          30041 NE06-07 Garretsen
Afzaklijn 3 (Groot Loosbroek)   2017-01-16 15:55:04.000 0118903G34  PR0800055654.006    NULL    205           NULL
Afzaklijn 7 (BB Veghel)         2017-01-02 16:40:32.000 0125995AA11 PR0800055388        NULL    NULL          31488 NE49-69 Mohle(Jarco)
Afzaklijn 7 (BB Veghel)         2017-01-02 16:40:32.000 0125995AA11 PR0800055388        2600    NULL          NULL
Afzaklijn 7 (BB Veghel)         2017-01-02 16:40:32.000 0125995AA11 PR0800055388        NULL    4             NULL

我希望视图看起来像:

    Produtielijn                    Datum_tijd              Artikel     PRorder             Gewicht  aantal       klant
Afzaklijn 3 (Groot Loosbroek)   2017-01-16 15:55:04.000 0118903G34  PR0800055654.006        NULL       205        30041 NE06-07 Garretsen
Afzaklijn 7 (BB Veghel)         2017-01-02 16:40:32.000 0125995AA11 PR0800055388            2600       4          31488 NE49-69 Mohle(Jarco)

1 个答案:

答案 0 :(得分:0)

首先,您要对数据进行排序。

其次,假设您的Gewichtaantalklant列中的每个值都有一行,其中'非值'总是 NULL您可以使用maxgroup by

select Produtielijn
      ,Datum_tijd
      ,Artikel
      ,PRorder
      ,max(Gewicht) as Gewicht
      ,max(aantal) as aantal
      ,max(klant) as klant
from View
group by Produtielijn
        ,Datum_tijd
        ,Artikel
        ,PRorder