select DISTINCT [INVHDRBATCH],
[FGBATCH], [FG], CONVERT(DECIMAL(10,2), [FGMAT]) as [FGMAT],
CONVERT(DECIMAL(10,2), [FGLABOR]) as [FGLABOR], CONVERT(DECIMAL(10,2), [FGOH]) as [FGOH],
CONVERT(DECIMAL(10,2), [FGCOST]) as [FGCOST],
CONVERT(DECIMAL(10,2),[FGWEIGHT]) as [FGWEIGHT], [MATLB] as [MATLB],
[LABORLB] as [LABORLB],
[OHLB] as [OHLB],
--[FORMULA], [FORMULAMAT], [FORMULALABOR], [FORMULAOH],
rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar)) as [Component],
rtrim(cast([LOT] as varchar)) as [LOT], CONVERT(DECIMAL(10,2), WIPTEST.[LOTQTY]) as [LOTQTY],
CONVERT(DECIMAL(10,2), [LOTMATUNITCOST]) as [LOTMATUNITCOST],
CONVERT(DECIMAL(10,2), [LOTMATWIPCOST]) as [LOTMATWIPCOST],
case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTLABORWIPCOST]) else 0 end as [LOTLABORWIPCOST],
case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTOHWIPCOST]) else 0 end as [LOTOHWIPCOST]
from WIPTEST
INNER JOIN IV30200 BATCH on WIPTEST.[INVHDRBATCH] = BATCH.BACHNUMB AND WIPTEST.[INVHDRDOC] = BATCH.DOCNUMBR
INNER JOIN IV30300 ON BATCH.TRXSORCE = IV30300.TRXSORCE AND BATCH.DOCNUMBR = IV30300.DOCNUMBR
INNER JOIN IV30400 ON IV30300.TRXSORCE = IV30400.TRXSORCE
INNER JOIN BM_View_SL_BatchTicketAuditLog LOG on BATCH.BACHNUMB = LOG.BatchTicket AND BATCH.DOCNUMBR = LOG.GPDocNo
where LOT IS NOT NULL and LOG.FGItem = ''
and WIPTEST.[FG] = '506' and WIPTEST.[FGBATCH] = '50418G12D' and WIPTEST.[INVHDRBATCH] = '50418G12D'
UNION ALL
select DISTINCT '' as [INVHDRBATCH],
'' as [FGBATCH], '' as [FG], NULL as [FGMAT], NULL as [FGLABOR], NULL as [FGOH], NULL as [FGCOST], NULL as [FGWEIGHT], NULL as [MATLB],
NULL as [LABORLB], NULL as [OHLB],
'' as [Component], '' as [LOT], NULL as [LOTQTY], NULL as [LOTMATUNITCOST], NULL as [LOTMATWIPCOST], NULL as [LOTLABORWIPCOST], NULL as [LOTOHWIPCOST]
from WIPTEST
INNER JOIN IV30400 LOTNO ON WIPTEST.Component = LOTNO.ITEMNMBR AND WIPTEST.LOT = LOTNO.SERLTNUM
INNER JOIN IV30200 on WIPTEST.[INVHDRBATCH] = IV30200.BACHNUMB AND WIPTEST.[INVHDRDOC] = IV30200.DOCNUMBR
where WIPTEST.[FG] = '506' and WIPTEST.[FGBATCH] = '50418G12D' and WIPTEST.[INVHDRBATCH] = '50418G12D'
I want the finished good weight to be divided by the sum of the LOTQTYs shown in the last four records that I have highlighted in red, where the last two columns do not show records with 0.
select distinct
[INVHDRBATCH]
, [FGBATCH]
, [FG]
, convert(decimal(10, 2), [FGMAT]) as [FGMAT]
, convert(decimal(10, 2), [FGLABOR]) as [FGLABOR]
, convert(decimal(10, 2), [FGOH]) as [FGOH]
, convert(decimal(10, 2), [FGCOST]) as [FGCOST]
, convert(decimal(10, 2), [FGWEIGHT]) as [FGWEIGHT]
, [MATLB] as [MATLB]
, [LABORLB] as [LABORLB]
, [OHLB] as [OHLB]
, rtrim(cast([IV30300].[ITEMNMBR] as varchar)) as [Component]
, rtrim(cast([LOT] as varchar)) as [LOT]
, convert(decimal(10, 2), [WIPTEST].[LOTQTY]) as [LOTQTY]
, convert(decimal(10, 2), [LOTMATUNITCOST]) as [LOTMATUNITCOST]
, convert(decimal(10, 2), [LOTMATWIPCOST]) as [LOTMATWIPCOST]
, case when cast([LOT] as varchar(100)) like cast([IV30300].[ITEMNMBR] as varchar(100)) + '%'
then convert(decimal(10, 2), [LOTLABORWIPCOST])
else 0
end as [LOTLABORWIPCOST]
, case when cast([LOT] as varchar(100))) like cast([IV30300].[ITEMNMBR] as varchar(100)) + '%'
then convert(decimal(10, 2), [LOTOHWIPCOST])
else 0
end as [LOTOHWIPCOST],
convert(decimal(10, 2), [WIPTEST].[LOTQTY]) / nullif([calc].[SUM_LOTQTY], 0) as [YIELD]
from [WIPTEST]
inner join [IV30200] as [BATCH] on [WIPTEST].[INVHDRBATCH] = [BATCH].[BACHNUMB]
and [WIPTEST].[INVHDRDOC] = [BATCH].[DOCNUMBR]
inner join [IV30300] on [BATCH].[TRXSORCE] = [IV30300].[TRXSORCE]
and [BATCH].[DOCNUMBR] = [IV30300].[DOCNUMBR]
inner join [IV30400] on [IV30300].[TRXSORCE] = [IV30400].[TRXSORCE]
inner join [BM_View_SL_BatchTicketAuditLog] as [LOG] on [BATCH].[BACHNUMB] = [LOG].[BatchTicket]
and [BATCH].[DOCNUMBR] = [LOG].[GPDocNo]
outer apply (
select sum(cast(wt.[LOTQTY] as decimal(10, 2))) as SUM_LOTQTY
from [WIPTEST] wt
where wt.[INVHDRBATCH] = [WIPTEST].[INVHDRBATCH]
and wt.[FGBATCH] = [WIPTEST].[FGBATCH]
and wt.[FG] = [WIPTEST].[FG]
and cast(wt.[LOT] as varchar(100)) like cast([IV30300].[ITEMNMBR] as varchar(100)) + '%'
and convert(decimal(10, 2), [LOTLABORWIPCOST]) <> 0
and cast(wt.[LOT] as varchar(100))) like cast([IV30300].[ITEMNMBR] as varchar(100)) + '%'
and then convert(decimal(10, 2), [LOTOHWIPCOST]) <> 0
) calc
where [LOT] is not null and
[LOG].[FGItem] = '' and
[WIPTEST].[FG] = '506' and
[WIPTEST].[FGBATCH] = '50418G12D' and
[WIPTEST].[INVHDRBATCH] = '50418G12D'
union all
select distinct
'' as [INVHDRBATCH]
, '' as [FGBATCH]
, '' as [FG]
, null as [FGMAT]
, null as [FGLABOR]
, null as [FGOH]
, null as [FGCOST]
, null as [FGWEIGHT]
, null as [MATLB]
, null as [LABORLB]
, null as [OHLB]
, '' as [Component]
, '' as [LOT]
, null as [LOTQTY]
, null as [LOTMATUNITCOST]
, null as [LOTMATWIPCOST]
, null as [LOTLABORWIPCOST]
, null as [LOTOHWIPCOST]
from [WIPTEST]
inner join [IV30400] as [LOTNO] on [WIPTEST].[Component] = [LOTNO].[ITEMNMBR]
and [WIPTEST].[LOT] = [LOTNO].[SERLTNUM]
inner join [IV30200] on [WIPTEST].[INVHDRBATCH] = [IV30200].[BACHNUMB]
and [WIPTEST].[INVHDRDOC] = [IV30200].[DOCNUMBR]
where [WIPTEST].[FG] = '506' and
[WIPTEST].[FGBATCH] = '50418G12D' and
[WIPTEST].[INVHDRBATCH] = '50418G12D';
userid, username, firstname, lastname
1,someuser, john,smith
2,anotheruser, jane, dow
taskid,taskname, userid(referential based on the users table),duration, paid_boolean,amount
1,"build shelf",1,5,150
2,"assemble armoire",2,3,550
3,"code web interface to collect this data",2,3,350
4,"generate listings",1,4,350
now you want the follwoing inforamtion. number of tasks performed, total reimbursement, average hourly compensation and total hours spent.select a.userid, a.username, a.firstname,a.lastname,count (b.taskid) as Number_of_Tasks,sum(b.amount as "Total Reimbursement"),sum(b.amount)/sum(b.duration) as "Average hourly rate",sum(b.duration) as "Total hours" from users a
inner join tasks b on a.userid=b.userid
group by a.userid,a,username,a.firstname,a.lastname
userid,username,firstname,lastname,Number_of_tasks,Total Reimbursement,average hourly rate,Total hours
1,someuser,john,smith,2,500,50,9
2,anotheruser,jane,dow,2,900,150,6
FGWEIGHT/(SUM( [LOTMATUNITCOST] + [LOTMATWIPCOST] + case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTLABORWIPCOST]) else 0 end as [LOTLABORWIPCOST] +
case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTOHWIPCOST]) else 0 end as [LOTOHWIPCOST]) AS [YIELD]
[INVHDRBATCH],
[FGBATCH],
[FG],
[FGMAT],
CONVERT(DECIMAL(10,2), [FGLABOR]),
CONVERT(DECIMAL(10,2), [FGOH]),
CONVERT(DECIMAL(10,2), [FGCOST]),
CONVERT(DECIMAL(10,2),[FGWEIGHT]),
[MATLB],
[LABORLB],
[OHLB],
rtrim(cast(IV30300.ITEMNMBR as varchar),
rtrim(cast([LOT] as varchar)),
CONVERT(DECIMAL(10,2),
WIPTEST.[LOTQTY]),
CONVERT(DECIMAL(10,2), [LOTMATUNITCOST]),
CONVERT(DECIMAL(10,2), [LOTMATWIPCOST]),
case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTLABORWIPCOST]) else 0 end,
case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTOHWIPCOST]) else 0 end
select DISTINCT [INVHDRBATCH],
[FGBATCH], [FG], CONVERT(DECIMAL(10,2), [FGMAT]) as [FGMAT],
CONVERT(DECIMAL(10,2), [FGLABOR]) as [FGLABOR], CONVERT(DECIMAL(10,2), [FGOH]) as [FGOH],
CONVERT(DECIMAL(10,2), [FGCOST]) as [FGCOST],
CONVERT(DECIMAL(10,2),[FGWEIGHT]) as [FGWEIGHT], [MATLB] as [MATLB],
[LABORLB] as [LABORLB],
[OHLB] as [OHLB],
--[FORMULA], [FORMULAMAT], [FORMULALABOR], [FORMULAOH],
rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar)) as [Component],
rtrim(cast([LOT] as varchar)) as [LOT], CONVERT(DECIMAL(10,2), WIPTEST.[LOTQTY]) as [LOTQTY],
CONVERT(DECIMAL(10,2), [LOTMATUNITCOST]) as [LOTMATUNITCOST],
CONVERT(DECIMAL(10,2), [LOTMATWIPCOST]) as [LOTMATWIPCOST],
case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTLABORWIPCOST]) else 0 end as [LOTLABORWIPCOST],
case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTOHWIPCOST]) else 0 end as [LOTOHWIPCOST],
[FGWEIGHT]/(SUM([LOTMATUNITCOST] + [LOTMATWIPCOST] + case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTLABORWIPCOST]) else 0 end)+
case when rtrim(cast([LOT] as varchar)) LIKE rtrim(cast((select DISTINCT IV30300.ITEMNMBR) as varchar))+'%'
THEN CONVERT(DECIMAL(10,2), [LOTOHWIPCOST]) else 0 end) AS [YIELD]
from WIPTEST
INNER JOIN IV30200 BATCH on WIPTEST.[INVHDRBATCH] = BATCH.BACHNUMB AND WIPTEST.[INVHDRDOC] = BATCH.DOCNUMBR
INNER JOIN IV30300 ON BATCH.TRXSORCE = IV30300.TRXSORCE AND BATCH.DOCNUMBR = IV30300.DOCNUMBR
INNER JOIN IV30400 ON IV30300.TRXSORCE = IV30400.TRXSORCE
INNER JOIN BM_View_SL_BatchTicketAuditLog LOG on BATCH.BACHNUMB = LOG.BatchTicket AND BATCH.DOCNUMBR = LOG.GPDocNo
where LOT IS NOT NULL and LOG.FGItem = ''
and WIPTEST.[FG] = '506' and WIPTEST.[FGBATCH] = '50418G12D' and WIPTEST.[INVHDRBATCH] = '50418G12D'
GROUP BY WIPTEST.INVHDRBATCH, WIPTEST.FGBATCH, WIPTEST.FG, WIPTEST.FGMAT, WIPTEST.FGLABOR, WIPTEST.FGOH, WIPTEST.FGCOST, WIPTEST.FGWEIGHT, WIPTEST.MATLB,
WIPTEST.LABORLB, WIPTEST.OHLB, IV30300.ITEMNMBR, WIPTEST.LOT, WIPTEST.LOTQTY,
WIPTEST.LOTMATUNITCOST, WIPTEST.LOTMATWIPCOST, WIPTEST.LOTLABORWIPCOST,
WIPTEST.LOTOHWIPCOST
There are way too many tables that you are including.
without knowing the data
how many columns, tables are you combining and extracting data from?