2016-12-22 2 views
0

Я пытаюсь объединить данные текстового столбца, которые иногда не имеют значения, но иногда это происходит.Как объединить текстовые столбцы, которые иногда не имеют значений

SELECT RegWOSEGSmry.kserialnum, 
     RegWOSEGSmry.kmodel, 
     RegWOSEGSmry.kmfg, 
     RegWOSEGSmry.kcustnum, 
     RegWOSEGSmry.kbranch, 
     RegWOSEGSmry.kequipnum, 
     RegWOSEGSmry.kworkorder, 
     RegWOSEGSmry.oeshipname, 
     RegWOSEGSmry.oetypeord, 
     RegWOSEGSmry.SourceFlag, 
     RegWOSEGSmry.ardate, 
     RegWOSEGSmry.arinvno, 
     RegWOSEGSmry.aryear, 
     RegWOSEGSmry.CreationDate, 
     RegWOSEGSmry.custpcl, 
     RegWOSEGSmry.custsnum, 
     RegWOSEGSmry.FlatRateAll, 
     RegWOSEGSmry.CxOpenDate, 
     RegWOSEGSmry.DistributeFlatRates, 
     RegWOSEGSmry.FlatRateLabor, 
     RegWOSEGSmry.FlatRateMisc, 
     RegWOSEGSmry.FlatRateParts, 

     MAX (RegWOSEGSmry.oeitemlong) as Oeitemlong, 

     SUM (RegWOSEGSmry.FlatRateAllAmt), 
     SUM (RegWOSEGSmry.FlatRateLaborAmt), 
     SUM (RegWOSEGSmry.FlatRateMiscAmt), 
     SUM (RegWOSEGSmry.FlatRatePartsAmt), 
     SUM (RegWOSEGSmry.HardwareCost), 
     SUM (RegWOSEGSmry.HardwareStreetPrice), 
     SUM (RegWOSEGSmry.HardwareTMRPrice), 
     SUM (RegWOSEGSmry.LaborCost), 
     SUM (RegWOSEGSmry.LaborStreetPrice), 
     SUM (RegWOSEGSmry.LaborTMRPrice), 
     SUM (RegWOSEGSmry.MiscCost), 
     SUM (RegWOSEGSmry.MiscStreetPrice), 
     SUM (RegWOSEGSmry.MiscTMRPrice), 
     SUM (RegWOSEGSmry.PartsCost), 
     SUM (RegWOSEGSmry.PartsStreetPrice), 
     SUM (RegWOSEGSmry.PartsTMRPrice), 
     SUM (RegWOSEGSmry.TaxCost), 
     SUM (RegWOSEGSmry.TaxStreetPrice), 
     SUM (RegWOSEGSmry.TaxTMRPrice), 
     SUM (RegWOSEGSmry.LaborHours), 

     AVG (RegWOSEGSmry.artotal) 

FROM WieseData.dbo.RegWOSEGSmry RegWOSEGSmry 

WHERE (RegWOSEGSmry.kcustnum='165453') 

GROUP BY RegWOSEGSmry.kserialnum, 
     RegWOSEGSmry.kmodel, 
     RegWOSEGSmry.kmfg, 
     RegWOSEGSmry.kcustnum, 
     RegWOSEGSmry.kbranch, 
     RegWOSEGSmry.kequipnum, 
     RegWOSEGSmry.kworkorder, 
     RegWOSEGSmry.oeshipname, 
     RegWOSEGSmry.oetypeord, 
     RegWOSEGSmry.SourceFlag, 
     RegWOSEGSmry.ardate, 
     RegWOSEGSmry.arinvno, 
     RegWOSEGSmry.aryear, 
     RegWOSEGSmry.CreationDate, 
     RegWOSEGSmry.custpcl, 
     RegWOSEGSmry.custsnum, 
     RegWOSEGSmry.FlatRateAll, 
     RegWOSEGSmry.CxOpenDate, 
     RegWOSEGSmry.DistributeFlatRates, 
     RegWOSEGSmry.FlatRateLabor, 
     RegWOSEGSmry.FlatRateMisc, 
     RegWOSEGSmry.FlatRateParts 

Который производит это:
image

мне нужно иметь «Kserialnum», «Kmodel», и «Kequipmnum» вместе взятых, но иногда, как картина показывает, что нет никакой ценности для «Группа От".

+0

Вы можете вернуть значение по умолчанию, если столбец содержит NULL. Какая у вас платформа? – yogur

+0

MY Sql - это платформа – JBrewer

ответ

0
FROM WieseData.dbo.RegWOSEGSmry RegWOSEGSmry 

WHERE (RegWOSEGSmry.kcustnum='165453') 
and ("Kserialnum" is not null 
and "Kmodel" is not null 
and "Kequipmnum" is not null) 

Похоже, вы хотите, чтобы данные были не равными нулю. просто добавьте выше условия после предложения where. Дайте мне знать, если вы ищете что-то еще.

+0

Спасибо за ответ. Я действительно хотел бы объединить строки/столбцы, у которых нет данных в одну строку. – JBrewer

2

Комбинированный как в некотором роде? Нулевые значения не являются проблемой, если вы не находитесь на платформе, где конкатенация строк возвращает null на любой нулевой ввод. то есть SELECT 'A' + NULL + 'C' вернет NULL. В этом случае:

COALESCE(RegWOSEGSmry.kserialnum, '') 
+ COALESCE(RegWOSEGSmry.kmodel, '') 
+ COALESCE(RegWOSEGSmry.kequipnum, '') 

Это является верным способом объединить их для SQL Server, или заменить + с || и COALESCE с NVL для Oracle. Это можно использовать как в предложениях select, так и group by.

+0

Да, в сочетании, так что все возвращается на одну строку. Включена ли функция «Coalesce» в функцию «Group By» в конце запроса или добавлена ​​ли она к ней? – JBrewer

+0

Может быть, но не требуется в вашей текущей настройке. –

+0

Я постоянно получаю ошибки synatax следующим: – JBrewer

0

В MySQL вы можете заменить значения NULL значением по умолчанию, используя функцию IFNULL, использование IFNULL(columnName, defaultValue).

Поскольку вы получаете значения NULL в трех столбцах, примените функцию к этим столбцам. Учитывая значение по умолчанию 123, ваш запрос будет следующим:

SELECT IFNULL(RegWOSEGSmry.kserialnum, 123), 
    IFNULL(RegWOSEGSmry.kmodel, 123), 
    RegWOSEGSmry.kmfg, 
    RegWOSEGSmry.kcustnum, 
    RegWOSEGSmry.kbranch, 
    IFNULL(RegWOSEGSmry.kequipnum, 123), 
    RegWOSEGSmry.kworkorder, 
    RegWOSEGSmry.oeshipname, 
    RegWOSEGSmry.oetypeord, 
    RegWOSEGSmry.SourceFlag, 
    RegWOSEGSmry.ardate, 
    RegWOSEGSmry.arinvno, 
    RegWOSEGSmry.aryear, 
    RegWOSEGSmry.CreationDate, 
    RegWOSEGSmry.custpcl, 
    RegWOSEGSmry.custsnum, 
    RegWOSEGSmry.FlatRateAll, 
    RegWOSEGSmry.CxOpenDate, 
    RegWOSEGSmry.DistributeFlatRates, 
    RegWOSEGSmry.FlatRateLabor, 
    RegWOSEGSmry.FlatRateMisc, 
    RegWOSEGSmry.FlatRateParts, 

    MAX (RegWOSEGSmry.oeitemlong) as Oeitemlong, 

    SUM (RegWOSEGSmry.FlatRateAllAmt), 
    SUM (RegWOSEGSmry.FlatRateLaborAmt), 
    SUM (RegWOSEGSmry.FlatRateMiscAmt), 
    SUM (RegWOSEGSmry.FlatRatePartsAmt), 
    SUM (RegWOSEGSmry.HardwareCost), 
    SUM (RegWOSEGSmry.HardwareStreetPrice), 
    SUM (RegWOSEGSmry.HardwareTMRPrice), 
    SUM (RegWOSEGSmry.LaborCost), 
    SUM (RegWOSEGSmry.LaborStreetPrice), 
    SUM (RegWOSEGSmry.LaborTMRPrice), 
    SUM (RegWOSEGSmry.MiscCost), 
    SUM (RegWOSEGSmry.MiscStreetPrice), 
    SUM (RegWOSEGSmry.MiscTMRPrice), 
    SUM (RegWOSEGSmry.PartsCost), 
    SUM (RegWOSEGSmry.PartsStreetPrice), 
    SUM (RegWOSEGSmry.PartsTMRPrice), 
    SUM (RegWOSEGSmry.TaxCost), 
    SUM (RegWOSEGSmry.TaxStreetPrice), 
    SUM (RegWOSEGSmry.TaxTMRPrice), 
    SUM (RegWOSEGSmry.LaborHours), 

    AVG (RegWOSEGSmry.artotal) 

FROM WieseData.dbo.RegWOSEGSmry RegWOSEGSmry 

WHERE (RegWOSEGSmry.kcustnum='165453') 

GROUP BY IFNULL(RegWOSEGSmry.kserialnum, 123), 
    IFNULL(RegWOSEGSmry.kmodel, 123), 
    RegWOSEGSmry.kmfg, 
    RegWOSEGSmry.kcustnum, 
    RegWOSEGSmry.kbranch, 
    IFNULL(RegWOSEGSmry.kequipnum, 123), 
    RegWOSEGSmry.kworkorder, 
    RegWOSEGSmry.oeshipname, 
    RegWOSEGSmry.oetypeord, 
    RegWOSEGSmry.SourceFlag, 
    RegWOSEGSmry.ardate, 
    RegWOSEGSmry.arinvno, 
    RegWOSEGSmry.aryear, 
    RegWOSEGSmry.CreationDate, 
    RegWOSEGSmry.custpcl, 
    RegWOSEGSmry.custsnum, 
    RegWOSEGSmry.FlatRateAll, 
    RegWOSEGSmry.CxOpenDate, 
    RegWOSEGSmry.DistributeFlatRates, 
    RegWOSEGSmry.FlatRateLabor, 
    RegWOSEGSmry.FlatRateMisc, 
    RegWOSEGSmry.FlatRateParts 

Теперь, когда столбец содержит NULL, вместо этого возвращается.