SQL Concatenate View - PullRequest
       0

SQL Concatenate View

0 голосов
/ 15 декабря 2011

Мне нужно создать представление для объединения нескольких строк в одну строку.

Таблица, о которой идет речь, - QotMaster, и мне нужно объединить все строки из поля NComment, где LineType = '6', и я предполагаю сгруппировать их по каждой цитате, чтобы сгруппировать по полю цитаты. Каждая из строк для объединения имеет поле Строка и начинается с 2 и увеличивается в зависимости от того, сколько строк есть в комментарии кавычек.

В конечном итоге я хотел бы прочитать одну строку:

Quote           NComment
00202300        Lines for quotes all listed one after the other starting at 2 and so on

Любая помощь будет высоко оценена. Я попытался сбросить раздел, который мне нужно объединить ниже.

Quote   Line    LineType    DefaultEntry    ProductClass    TaxCode FedSalesTax MStockCode  MDescription    MWarehouse  MUom    MDecimals   MLineShipDate   MCusStockCode   MCusRetailPrice MMass   MVolume MUserField1 NComment    NCommentFromLin NCommentType    NCommentTextTyp NSrvIncTotal    NSrvSummary NSrvChargeType  NSrvParentLine  NSrvQtyFactor   NSrvApplyFactor NSrvDecimalRnd  NSrvDecRndFlag  NSrvMinValue    NSrvMaxValue    NSrvMulDiv  NPrtOnInv   NPrtOnDel   NPrtOnAck   NPrtOnQuote NCommentFlag1   NCommentFlag2   NCommentFlag3   NCommentFlag4   NCommentFlag5   NCommentFlag6   NCommentPoJob   TimeStamp   Version Release SalesOrderLine  MBomFlag    MParentKitType  MQtyPer MScrapPercentage    MPrintComponent MComponentSeq   MOptionalFlag   Estimate    ConfirmedFlag
00202300    1   7   0   M20             002023000000001                 Periodic inspection & test      **      0   2012-01-13 00:00:00.000                                 0.00000 0.000000    0.000000                                                            0                       0   0.000000        0       0.00    0.00                        0   0   0   0   0   0       0x000000002414E6EE          0           0.000000    0.00    N                            
00202300    2   6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            Pre-Formed Windings, Sheffield                  0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C0          0           0.000000    0.00                                 
00202300    3   6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            To carry out a periodic inspection and test     0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C1          0           0.000000    0.00                                 
00202300    4   6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            of the fixed wiring installation.  This will    0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C2          0           0.000000    0.00                                 
00202300    5   6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            consist of 100% inspection and 10% testing,     0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C3          0           0.000000    0.00                                 
00202300    6   6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            based on previous records being available.      0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C4          0           0.000000    0.00                                 
00202300    7   6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            The price is based on no serious defects        0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C5          0           0.000000    0.00                                 
00202300    8   6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            being found, which may result in the testing    0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C6          0           0.000000    0.00                                 
00202300    9   6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            being expanded to cover 25%, which would        0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C7          0           0.000000    0.00                                 
00202300    10  6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            incur additional costs. A full report will      0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C8          0           0.000000    0.00                                 
00202300    11  6   0                                                                                           0   NULL                                    0.00000 0.000000    0.000000            be issued upon completion.                      0   N                   0   0.000000        0       0.00    0.00                    Y   1   0   0   0   0   0       0x000000002414E6C9          0           0.000000    0.00                                 

1 Ответ

0 голосов
/ 15 декабря 2011

На сервере sql вам просто нужно создать функцию, которая будет делать что-то вроде этого:

CREATE FUNCTION [dbo].[mergeComments](@quote NVARCHAR(8))
RETURNS nvarchar(max)
AS
BEGIN

DECLARE @comment nvarchar(max)
DECLARE @delimiter nvarchar(2)

SET @delimiter = ', '
SET @comment = ''

SELECT @comment = @comment + ISNULL(NComment,'')+@delimiter
FROM QotMaster
WHERE Quote = @quote AND Line > 1

SET @comment = substring(@comment,1,len(@comment)-LEN(@delimiter))

RETURN @comment

END

Тогда ваше представление просто будет делать что-то вроде

SELECT Quote, dbo.mergeComments(Quote) NQuote 
FROM (SELECT DISTINCT Quote FROM QotMaster)

Это просто не в моей голове, так что, вероятно, есть лучший способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...