Haben Sie dies auswählen. Es generiert eine Liste von Benutzern nach Team und summiert sie Daten. Ich brauche eine benutzerdefinierte Zeile, es wäre die letzte Zeile mit allen Team-Summen, nicht vom Benutzer. Ich habe schreiben wählen, dass diese Daten nehmen wird, aber ich weiß nicht, wie man es in alle diese Auswahl hinzufügen hinzufügen.MSSQL SELECT benutzerdefinierte Zeile hinzufügen
SELECT
Drive.Owner
,round(cast((sum(case when dock = 'yes' then 1 else 0 end)+sum(case when dock = 'old' then 1 else 0 end))as float)/cast(count(dock)as float)*100,2) as ava
,round(cast(sum(case when dock = 'yes' then 1 else 0 end)as float)/cast((sum(case when dock = 'yes' then 1 else 0 end)+sum(case when dock = 'old' then 1 else 0 end))as float)*100,2) as uptodate
,ROUND(sum(case when firsta != 'none' then 1 else 0 end)/ROUND(CAST(count(firsta)AS FLOAT),2)*100,2) nones1
,ROUND(sum(case when seconda != 'none' then 1 else 0 end)/ROUND(CAST(count(seconda)AS FLOAT),2)*100,2) nones2
,ISNULL(ROUND(Sum(CAST(Ontime AS FLOAT))/Sum(task_count), 2),0) as ontime
,ISNULL(ROUND(AVG(CAST(actual AS FLOAT)), 2),0) as actual
FROM (
SELECT
users.user_name+ ' ' +users.user_surname AS Owner
,users.split as test
,sc.firstbackup as firsta
,sc.secondbackup as seconda
,sc.documentation as dock
,sc.active as active
,(SELECT CASE WHEN non_sc = '1' THEN 'regular' ELSE 'sc' END) as sc_or_non_sc
FROM
[bstplanning].[dbo].[sc]
INNER JOIN
[bstplanning].[dbo].[users]
ON sc.user_id = users.user_id
WHERE
users.split='Rep'
) Drive
left join
(
SELECT
dbo.sc_data.track
,dbo.users.split
,dbo.sc_data.country
,dbo.sc_data.client
,dbo.sc_data.task_group
,MAX(ISNULL(dbo.users.user_name,'') + ' ' + ISNULL(dbo.users.user_surname,'')) as Owner
,AVG(CASE WHEN dbo.sc_data.ontime = 'on time' THEN 100 ELSE 0 END)*COUNT(dbo.sc_data.country) AS Ontime
,AVG(CASE WHEN dbo.sc_data.accuracy = 'accurate' THEN 100 ELSE 0 END) AS actual
,COUNT(dbo.sc_data.country) AS task_count
FROM
[bstplanning].[dbo].[sc_data]
INNER JOIN dbo.users
ON dbo.sc_data.user_id = dbo.users.user_id
WHERE
dbo.sc_data.date >= '2016-06-01' AND dbo.sc_data.date <= '2016-06-15' AND dbo.sc_data.actual > 0 AND
((dbo.sc_data.ontime='on time' OR dbo.sc_data.ontime = 'late') OR (dbo.sc_data.accuracy='accurate' OR dbo.sc_data.accuracy = 'error'))
GROUP BY
dbo.sc_data.country
,dbo.sc_data.client
,dbo.sc_data.task_group
,dbo.users.split
,dbo.sc_data.track
) Drive2
on Drive.Owner=Drive2.Owner
where sc_or_non_sc ='sc'
group by
Drive.Owner
Code muss ich hinzufügen.
select
round(cast((sum(case when aa.documentation = 'yes' then 1 else 0 end)+sum(case when aa.documentation = 'old' then 1 else 0 end))as float)/cast(count(aa.documentation)as float)*100,2) as docas,
round(cast(sum(case when aa.documentation = 'yes' then 1 else 0 end)as float)/cast((sum(case when aa.documentation = 'yes' then 1 else 0 end)+sum(case when aa.documentation = 'old' then 1 else 0 end))as float)*100,2) as uptodates
from dbo.sc aa , dbo.users bb
where bb.split='Rep' and bb.user_id=aa.user_id
Irgendwelche Ideen?
UNION [ALLE]? – Serg
Ja, es hat funktioniert. Vielen Dank. – Macb3th