2013-10-24 9 views
-1

То, что я пытаюсь сделать, - это выбрать несколько строк в одну строку таблицы temp. В таблице temp должно быть 1 строка, в которой перечислены все различные значения начисления. Вот код ниже:Выбор нескольких строк в таблице строк с одной строкой

declare @RunDate varchar(7) 
set @RunDate = '2013-07' 

declare @ShortItemNo1 int 

set @ShortItemNo1 = 723639 




declare @SalesAccruals table(QuantityShipped int, ShortItemNo int, GrossAmount money, AccrualReturns money, AccrualMedicaid money, 
          AccrualChargebacks money) 

insert @SalesAccruals 

select 
    sum(s.QuantityShipped) QuantityShipped, 
    s.ShortItemNo, 
    sum(s.ExtendedPrice) ExtendedPrice, 
    case when aa.AccrualType=3 then sum(a.AccrualAmount) end, 
    case when aa.AccrualType=8 then sum(a.AccrualAmount) end, 
    case when aa.AccrualType=2 then sum(a.AccrualAmount) end 
from 
    SalesSummary s join Accruals a on 
     s.SalesSummaryGuid = a.SalesSummaryGuid 
    join AccrualsSetup aa on 
     a.AccrualsSetupGuid = aa.AccrualsSetupGuid 
    join LookupAccrualTypes la on 
     la.AccrualTypeID = aa.AccrualType 

where 
    convert(varchar(7), InvoiceDate, 20) = @RunDate 
    and s.ShortItemNo in (@ShortItemNo1) 
group by 
    s.ShortItemNo, 
    aa.AccrualType 

select * from @SalesAccruals 
+0

Можете ли вы предоставить образцы данных для чего вы хотите в таблице темп? – David

+0

прямо сейчас оператор select возвращает четыре строки, потому что существует четыре разных типа начислений. Я хочу, чтобы в таблицу temp была выбрана одна строка со всеми типами начислений. Я не уверен, является ли case case лучшим способом для этого ... – Jeff

+0

Теперь он работает так, как я хочу, но другие значения в столбцах - это нулевые значения. Любой способ избавиться от них? – Jeff

ответ

0

Попробуйте изменить SELECT часть вашего запроса, чтобы быть это ...

select 
    sum(s.QuantityShipped) QuantityShipped, 
    s.ShortItemNo, 
    sum(s.ExtendedPrice) ExtendedPrice, 
    sum(case when aa.AccrualType=3 then a.AccrualAmount else 0 end), 
    sum(case when aa.AccrualType=8 then a.AccrualAmount else 0 end), 
    sum(case when aa.AccrualType=2 then a.AccrualAmount else 0 end) 

aa.AccrualType Затем удалите из GROUP BY.

+0

Работал как шарм. Спасибо, мой друг. – Jeff

Смежные вопросы