Have to abbreviate the values from short description column using SQL

Viewed 65

I have to abbreviate the values for column 3 I have mentioned create table script, insert values query, query which i tried and expecting output. Please help me to abbreviate the column3 from the column2

Insert query for demotable:

INSERT INTO demotable (ItemNumber, NounMod, Attri, Attval) 
VALUES ('CTPLMSP006858', 'HOSE,BRAIDED', 'TYPE', 'FLEXIBLE' ), 
       ('CTPLMSP006858', 'HOSE,BRAIDED', 'SIZE', '12'),
       ('CTPLMSP006858', 'HOSE,BRAIDED', 'UOM', 'MM'),
       ('CTPLMSP006858', 'HOSE,BRAIDED', 'END CONNECTION', 'Not applicable'),
       ('CTPLMSP006858', 'HOSE,BRAIDED', 'WORKING PRESSURE', '10 BAR'),
       ('CTPLMSP006858', 'HOSE,BRAIDED', 'MATERIAL', 'NYLON,PVC'),
       ('CTPLMSP006858', 'HOSE,BRAIDED', 'EQUIPMENT NAME', ''),
       ('CTPLMSP006858', 'HOSE,BRAIDED', 'OTHER INFO', '')

I have a table which is named as demotable.

ItemNumber      NounMod         Attri               Attval
--------------------------------------------------------------------
CTPLMSP006858   HOSE,BRAIDED    TYPE                FLEXIBLE        
CTPLMSP006858   HOSE,BRAIDED    SIZE                12  
CTPLMSP006858   HOSE,BRAIDED    UOM                 MM  
CTPLMSP006858   HOSE,BRAIDED    END CONNECTION      Not applicable  
CTPLMSP006858   HOSE,BRAIDED    WORKING PRESSURE    10 BAR  
CTPLMSP006858   HOSE,BRAIDED    MATERIAL            NYLON,PVC   
CTPLMSP006858   HOSE,BRAIDED    EQUIPMENT NAME      
CTPLMSP006858   HOSE,BRAIDED    OTHER INFO

Insert values query for ABBTBL:

INSERT INTO ABBTBL (vcWord, vcAbbreviation, vcNotes, vcDelFlag)
VALUES ('bar', 'BR', '', 'FALSE' ),
       ('HOSE', 'HSE', '', 'FALSE'),
       ('FLEXIBLE', 'flex', '', 'FALSE' ),
       ('not applicable', 'N/A', '', 'FALSE'),
       ('Braided', 'BRAID', '', 'FALSE') 

I have another table which is named abbtbl:

inRecordId   vcWord            vcAbbreviation          vcNotes          vcDelFlag
--------------------------------------------------------------------------------------
1            bar               BR                      NULL             FALSE
2            HOSE              HSE                     NULL             FALSE
3            FLEXIBLE          flex                    null             false
4            not applicable    N/A                     null             false
5            Braided           BRAID

My query:

SELECT 
    A.ItemNumber,
    shortdesc = LEFT( A.NounMod +','+
    STUFF((
            SELECT ';' +ISNULL([AttVal], '')+' '+ISNULL(Attuom , '')
            FROM demotable
            WHERE ItemNumber = A.ItemNumber AND NounMod = A.NounMod
            AND NOT (ISNULL([AttVal], '') = '' AND ISNULL(Attuom , '') = '')
            FOR XML PATH('')
            ), 1, 1, ''),40),
        shortdescabb = 
   LEFT( b.vcAbbreviation +','+
    STUFF((
            SELECT ';' +ISNULL( b.vcAbbreviation, '')+' '+ISNULL( b.vcAbbreviation , '')
            FROM demotable a
            inner join ABBTBL b on b.vcWord = a.NounMod
            WHERE ItemNumber = A.ItemNumber AND NounMod = A.NounMod
            AND NOT (ISNULL([AttVal], '') = '' AND ISNULL(Attuom , '') = '')
            FOR XML PATH('')
            ), 1, 1, ''),40)

    FROM demotable A, ABBTBL b
    GROUP BY A.ItemNumber,A.NounMod

in my above query column shortdesc is working properly but column shortdescabb is not abbreviating getting error

Expicting output:

ItemNumber      shortdesc                                       shortdescabb
--------------------------------------------------------------------------------
CTPLMSP006858   HOSE,BRAIDED,FLEXIBLE;12;MM;Not applicabl       HSE,BRAID,FLEX;12;MM;N/A;10 BR;NYLON

I have mentioned create table query and insert values query below. create table script for demotable:

CREATE TABLE [dbo].[demotable]
(
    [ItemNumber] [varchar](50) NULL,
    [NounMod] [varchar](50) NULL,
    [Attri] [varchar](50) NULL,
    [Attval] [varchar](5000) NULL,
    [Attuom] [varchar](50) NULL
) ON [PRIMARY]

Create table script for ABBTBL:

CREATE TABLE [dbo].[ABBTBL]
(
    [inRecordId] [int] IDENTITY(1,1) NOT NULL,
    [vcWord] [varchar](500) NULL,
    [vcAbbreviation] [varchar](100) NULL,
    [vcNotes] [varchar](200) NULL,
    [vcDelFlag] [varchar](5) NULL
) ON [PRIMARY]
0 Answers
Related