Ich habe zwei Abfragen. Eine Abfrage ruft die Informationen basierend auf den Bestellungen ab, die an einem Tag für den Mitarbeiter geplant wurden. Die andere Abfrage zieht die Anzahl der Aufträge, die an einem Tag abgeschlossen und bezahlt wurden, zusammen mit dem Gesamtbetrag der Einnahmen aus den Aufträgen.So verbinden Sie zwei ausgewählte Abfragen in SQL Server 2012
Ich habe die Foren ausgekratzt, um den Code zusammen zu bekommen, um diese Abfragen zu bekommen, aber ich muss beide Abfragen zusammengefügt haben. Ich möchte diese Informationen in Report Builder verwenden, sobald ich es fertig habe. Es ist wahrscheinlich einfach für jemanden, aber es verwirrt mich, da ich weit entfernt von jeder Art von Experten mit SQL bin.
Ich brauche nur einen Tag im Moment, habe aber diesen Code gefunden und für den Moment modifiziert und hoffe, dass ich ihn in Zukunft nutzen kann, wenn ich Wochen- und Monatsdaten benötige.
Jede Hilfe wäre willkommen.
Abfrage 1
declare @dt DATE = '20160823'
set DATEFIRST 7;
set @dt = dateadd(week, datediff(week, '19050101', @dt), '19050101');
;with dt as
(
select
Technician = (CASE emp_id
WHEN 'CW697' THEN 'Joe Biggs'
WHEN 'DZ663' THEN 'Mimi Cassidy'
END),
dw = datepart(weekday, DATE)
from
dbo.ordemps
where
date >= @dt and date <dateadd(day, 7, @dt)
),
x AS
(
select
Technician, dw = coalesce(dw,8),
c = convert(varchar(11), COUNT(*))
from
dt
group by
grouping sets((Technician), (Technician,dw))
)
select
Technician,
[Sun] = coalesce([1], '-'),
[Mon] = coalesce([2], '-'),
[Tue] = coalesce([3], '-'),
[Wed] = coalesce([4], '-'),
[Thu] = coalesce([5], '-'),
[Fri] = coalesce([6], '-'),
[Sat] = coalesce([7], '-'),
TOTAL =[8]
from
x
PIVOT
(MAX(c) FOR dw IN([1],[2],[3],[4],[5],[6],[7],[8])) as pvt;
Abfrage 2
select
case
when grouping(d.m)=15 then 'Year ' + cast(max(d.y) as varchar(10))
when grouping(date)=15 then datename(m, max(DATE)) + ' ' + cast(max(d.y) as varchar(10))
else cast(cast([date] as date) as varchar(255))
end as DATE,
TotalOrders = /*sum(Amount)*/convert(varchar(11), COUNT(*)),
TotalSales = sum(Amount),
Technician = (CASE recv_by
WHEN 'CW697' THEN 'Joe Biggs'
WHEN 'DZ663' THEN 'Mimi Cassidy'
END)
from
ordpay
cross apply
(select
datepart(yy, [date]),
datepart(m, [date])
) d(y, m)
where
[DATE] >= dateadd(day, datediff(day, 1, getdate()), 0)
and [date] < dateadd(day, datediff(day, 0, getdate()), 0)
group by
recv_by, d.y, rollup (d.m, date)
order by
d.y desc, grouping(d.m), d.m, grouping(DATE), DATE
Willkommen bei Stackoverflow (SO)! So gerne wir uns gegenseitig helfen, sind wir kein Code-Writing-Service. Machen Sie sich etwas Mühe und versuchen Sie es herauszufinden. Wenn Sie Probleme haben, dann bitten Sie um Hilfe. Oft werden diese Fragen geschlossen, da keine Probleme auftreten und der Aufwand für die Frage nicht ausreichend angezeigt wird. Wir tun dies nicht, um gemein oder grausam zu sein, sondern weil diejenigen, die diesen Code schreiben/pflegen, sich Mühe geben sollten und andere für diese Art von Arbeit bezahlt werden! – xQbert
Es tut mir leid, wenn ich rüber kam, als ob ich einfach jemanden bat, Software für mich zu schreiben. Ich habe über einen Tag daran gearbeitet, um es herauszufinden. Ich habe hier zahlreiche Beiträge gelesen und habe noch nicht begriffen, was gebraucht wird. Also habe ich mich entschieden, auch hier eine Frage zu stellen, nachdem ich einen Tag mit dem Kopf geschlagen habe. – mistrfree
Es wird viel einfacher, wenn Sie einen Code zum Generieren von Eingabedaten bereitstellen und uns mitteilen, was das erwartete Ergebnis ist. Fügen Sie einfach eine create-Tabelle und einige insert-Anweisungen hinzu, um daraus Beispieldaten zu generieren.Übrigens denke ich, dass es eine gültige Frage sein kann und es wert ist, daran zu arbeiten. – FLICKER