Gespeicherte Prozedur & union
Ich bin erstellen einer gespeicherten Prozedur für die Validierung von Daten, dass ist ziemlich straight-forward. Ich habe mehrere sql-Anweisungen, die ich ausführen möchten und zeigen einfach nur die Ergebnisse zu vergleichen, um die Quelle. Ich kombinierte die sql-Anweisungen, die mit union, aber Sie kann nicht mit der union zusammen-Spalten unterschiedliche Datentypen aufweisen. Hoffentlich wird jemand einen Vorschlag, auf einem besseren Weg zu gehen?
USE [employee_data]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[data_employee]
AS
BEGIN
declare @LtYear as varchar(10)
set @LtYear = '2012'
SELECT 'Sum of total salary for ' + @LtYear as title, sum([Total_Salary]) as Salary
From [employee_data].[dbo].[employee]
where year = @LtYear
UNION
select 'Overall Average Salary ' + @LatestYear as title, avg([Total_Salary]) as 'Average Salary'
From [employee_data].[dbo].[employee]
where year = @LtYear
SELECT 'Employee Name - 1' as title, first_name+' '+last_name
From [employee_data].[dbo].[employee]
where year = 2012 --@LtYear
and [First_Name] = 'first'
and [Last_Name] = 'last'
UNION
SELECT 'Individual Employee Experience ' + @LtYear as title, cast([work_Exp]as varchar) as 'Work Experience'
From [employee_data].[dbo].[employee]
where year = @LtYear
and [First_Name] = 'first'
and [Last_Name] = 'last'
Ich würde gerne sehen die Ergebnisse wie folgt:
Summe von Gesamt-Gehalt: 50000000
Insgesamt Durchschnittliche Gehalt: 37000
Der Name Des Mitarbeiters - 1: Vor-Und Nachname
Einzelne Mitarbeiter Erfahrung 2012: 12
- Casting alle Ergebnisse zu
varchar
sollte für Sie arbeiten. - Warum brauchen Sie diese in separaten Zeilen statt einer einzelnen Zeile mit mehreren Spalten? Auch bitte nicht gewirkt
varchar
- geben Sie die Länge als auch. - kopieren der Ergebnisse einer Validierung Tabellenkalkulation
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum dies nicht gekippt seitwärts, so dass Sie nicht haben, um zu verwenden, die Gewerkschaften, die Sie gerade haben, die Daten zu Scannen seitlich:
Nicht sicher, ob Sie wirklich meinte, hart-code
'first'
und'last'
aber ich vermute, dass diese besser wäre als Parameter, vor allem, wenn Sie dabei sind, verweisen Sie Sie mehrfach.Gegeben, dass Ihre Anforderungen sind getrieben von Excel, vielleicht versuchen:
Feststellen, ein paar änderungen:
year
) in eckigen Klammern. Entfernt die, die nicht notwendig sind - Sie dienen nur, um die Abfrage schwieriger zu Lesen.Nun, Sie haben verdummt die Frage, und es gibt mehr Anfragen, die wir nicht sehen können. Aber ich denke immer noch ein besserer Ansatz wäre, Graben der Gewerkschaften gegen die Basis-Tabelle, und führen Sie es auf diese Weise anstelle (gerade wenn man noch 10 oder 15 weitere Abfragen auf die gleiche Tabelle). Dies ist nicht unbedingt führen anders, aber es wird eine viel leichter zu pflegen.
Weiter, ich denke, dein Ansatz ist sehr lästig in den ersten Platz. Du bist echt der Durchführung von Daten-Validierung von cobbling diese Abfragen zusammen und manuelles einfügen der Ergebnisse in Excel? Sicherlich gibt es einen automatisierten Weg, dies zu tun, und anstatt zu versuchen, einen Schneider eine unhandliche SQL-Abfrage conform, um Ihren Prozess, Sie sollte zur Verbesserung der Prozess...