MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 06.05.2019, 10:52   #1
magic1708
MOF Koryphäe
MOF Koryphäe
Standard T-SQL : MSSQL 2005 - Deklarieren von Variablen

Guten Tag,


ich hänge grade an einem Problem.

Ich habe eine UNION Abfrage auf dem SQL Server. Sprich eine Stored Procedur.

DIe möchte ich mit 2 Parametern aufrufen.


Ich bekomme beim deklarieren immer wieder Fehler. Mache das über Access als adp.

Jeweils die beiden Werte
Code:

dbo.T_Obj.VkId
und
Code:

year(EiDat) = 2019
möchte ich deklarieren.

Was mache ich da falsch?

Hatte versucht es direkt nach

Code:

CREATE PROCEDURE dbo.qry_SP_Union_Statistik_Buero
einzufügen mit
Code:

@VKB int(4), @Jahr int(4)
Dann in den Where Klauseln anstellte der Werte @VKB oder @Jahr eingetragen.

Er mag das aber irgendwie anders Deklariert.

Code:

CREATE PROCEDURE dbo.qry_SP_Union_Statistik_Buero AS SELECT      Month(EiDat) AS MONAT, COUNT(*) AS Komplett, 
                                                                                                                                                             SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene, 
                                                                                                                                                             SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS Erhaltene, 
                                                                                                                                                             SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS keinAuftrag, 
                                                                                                                                                             SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS Bearb_NichAbg, 
                                                                                                                                                             SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS Abgesagt, 
                                                                                                                                                             Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) 
                                                                                                                                                             AS Money) AS QuoteOffen, Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) 
                                                                                                                                                             AS money) / cast(COUNT(*) AS Money) AS QuoteErhalten, 
                                                                                                                                                             Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) 
                                                                                                                                                             AS Money) AS QuotekeinAuftrag, 
                                                                                                                                                             Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) 
                                                                                                                                                             AS Money) AS QuoteBearb_NichAbg, 
                                                                                                                                                             Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) 
                                                                                                                                                             AS Money) AS QuoteAbgesagt
                                                                                                                                     FROM           dbo.T_User INNER JOIN
                                                                                                                                                             dbo.T_Obj ON dbo.T_User.UsID = RIGHT(dbo.T_Obj.UsIns, 8)
                                                                                                                                     WHERE       dbo.T_Obj.VkId = 2340 AND year(EiDat) = 2019
                                                                                                                                     GROUP BY month(EiDat)
UNION ALL
SELECT      year(Eidat) AS Monat, COUNT(*) AS Komplett, SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene, 
                        SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS Erhaltene, SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS keinAuftrag, 
                        SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS Bearb_NichAbg, SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS Abgesagt, 
                        Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteOffen, 
                        Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteErhalten, 
                        Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuotekeinAuftrag, 
                        Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteBearb_NichAbg, 
                        Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteAbgesagt
FROM          dbo.T_User INNER JOIN
                        dbo.T_Obj ON dbo.T_User.UsID = RIGHT(dbo.T_Obj.UsIns, 8)
WHERE      dbo.T_Obj.VkId = 2340 AND year(EiDat) = 2019
GROUP BY year(EiDat)
ORDER BY month(Eidat)

__________________

Gruß Matthias
magic1708 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 12:35   #2
stendate
MOF User
MOF User
Standard

Hallo,

Zitat:

@VKB int(4), @Jahr int(4)

Du kannst bei INT-Datentypen keine Länge vorgeben.
Versuche es mal so:

Code:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[qry_SP_Union_Statistik_Buero]
	@FirstName VARCHAR(100),
	@LastName VARCHAR(100)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @VKB int;
	DECLARE @Jahr int;

	--SELECT ...
END
stendate ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 13:07   #3
magic1708
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Jetzt habe ich sowas hier umgesetzt.

Bekomme aber ADO-Fehler Falscher Syntax in der Nähe von GO


Code:

SET               ANSI_NULLS ON 
GO
SET               QUOTED_IDENTIFIER ON 
GO 
CREATE PROCEDURE [dbo].[qry_SP_Union_Statistik_Buero] 
@VKB int, 
@Jahr int 

AS 
BEGIN
SET               NOCOUNT ON; 

DECLARE @VKB int; 
DECLARE @Jahr int;
                           

 SELECT      Month(EiDat) AS MONAT, COUNT(*) AS Komplett, SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene, 
                                                     SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS Erhaltene, SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) 
                                                     AS keinAuftrag, SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS Bearb_NichAbg, 
                                                     SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS Abgesagt, Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) 
                                                     AS money) / cast(COUNT(*) AS Money) AS QuoteOffen, Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS money) 
                                                     / cast(COUNT(*) AS Money) AS QuoteErhalten, Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) 
                                                     AS Money) AS QuotekeinAuftrag, Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) 
                                                     AS QuoteBearb_NichAbg, Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) 
                                                     AS QuoteAbgesagt
                             FROM           dbo.T_User INNER JOIN
                                                     dbo.T_Obj ON dbo.T_User.UsID = RIGHT(dbo.T_Obj.UsIns, 8)
                             WHERE       dbo.T_Obj.VkId = 2340 AND year(EiDat) = 2019
                             GROUP BY month(EiDat)
UNION ALL
SELECT      year(Eidat) AS Monat, COUNT(*) AS Komplett, SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene, 
                        SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS Erhaltene, SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS keinAuftrag, 
                        SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS Bearb_NichAbg, SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS Abgesagt, 
                        Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteOffen, 
                        Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteErhalten, 
                        Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuotekeinAuftrag, 
                        Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteBearb_NichAbg, 
                        Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteAbgesagt
FROM          dbo.T_User INNER JOIN
                        dbo.T_Obj ON dbo.T_User.UsID = RIGHT(dbo.T_Obj.UsIns, 8)
WHERE      dbo.T_Obj.VkId = 2340 AND year(EiDat) = 2019
GROUP BY year(EiDat)
ORDER BY month(Eidat) 
END

__________________

Gruß Matthias
magic1708 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 13:56   #4
stendate
MOF User
MOF User
Standard

Zitat: von magic1708 Beitrag anzeigen

Jetzt habe ich sowas hier umgesetzt.
Bekomme aber ADO-Fehler Falscher Syntax in der Nähe von GO
END[/code]

Lass mal die 4 Zeilen vor dem "CREATE PROCEDURE ..." weg, ich hatte das im SSMS und nicht per ADO getestet.
stendate ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 14:20   #5
magic1708
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Irgendwas ist da komisch.


Das hatte ich vorhin auch schon so ähnlich.... Aktuell kommt da:

ADO-Fehler: Falscher Syntax in der Nähe des PROCEDUR Schlüsselwortes

Code:

CREATE PROCEDURE [dbo].[qry_SP_Union_Statistik_Buero] @VKB int, @Jahr int AS BEGIN
SET               NOCOUNT ON; DECLARE @VKB int; DECLARE @Jahr int;
                            SELECT      Month(EiDat) AS MONAT, COUNT(*) AS Komplett, SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene, 
                                                     SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS Erhaltene, SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) 
                                                     AS keinAuftrag, SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS Bearb_NichAbg, 
                                                     SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS Abgesagt, Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) 
                                                     AS money) / cast(COUNT(*) AS Money) AS QuoteOffen, Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS money) 
                                                     / cast(COUNT(*) AS Money) AS QuoteErhalten, Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) 
                                                     AS Money) AS QuotekeinAuftrag, Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) 
                                                     AS QuoteBearb_NichAbg, Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) 
                                                     AS QuoteAbgesagt
                             FROM           dbo.T_User INNER JOIN
                                                     dbo.T_Obj ON dbo.T_User.UsID = RIGHT(dbo.T_Obj.UsIns, 8)
                             WHERE       dbo.T_Obj.VkId = 2340 AND year(EiDat) = 2019
                             GROUP BY month(EiDat)
UNION ALL
SELECT      year(Eidat) AS Monat, COUNT(*) AS Komplett, SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene, 
                        SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS Erhaltene, SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS keinAuftrag, 
                        SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS Bearb_NichAbg, SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS Abgesagt, 
                        Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteOffen, 
                        Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteErhalten, 
                        Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuotekeinAuftrag, 
                        Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteBearb_NichAbg, 
                        Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteAbgesagt
FROM          dbo.T_User INNER JOIN
                        dbo.T_Obj ON dbo.T_User.UsID = RIGHT(dbo.T_Obj.UsIns, 8)
WHERE      dbo.T_Obj.VkId = 2340 AND year(EiDat) = 2019
GROUP BY year(EiDat)
ORDER BY month(Eidat) END

__________________

Gruß Matthias
magic1708 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 14:47   #6
stendate
MOF User
MOF User
Standard

Entferne mal zusätzlich die eckigen Klammern im ProcedereNamen...
stendate ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 14:48   #7
magic1708
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Hallo,

danke für deinen Tip.

Das geht leider auch nicht, gleicher Fehler.

Google mir grade nen Wolf... Ich weiss grad echt nicht an was es liegt.


Ist ja auch nicht die erste...

__________________

Gruß Matthias
magic1708 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 14:59   #8
hcscherzer
MOF Guru
MOF Guru
Standard

Die Parameter sind zweimal deklariert ...
Einmal - hinter dem Prozedur-Namen - reicht doch wohl.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 15:00   #9
magic1708
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Mache ich es so:

Code:

CREATE PROCEDURE dbo.qry_SP_Union_Statistik_Buero @VKB int, @Jahr int AS BEGIN
SET               NOCOUNT ON;
                            SELECT      Month(EiDat) AS MONAT, COUNT(*) AS Komplett, SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene, 
                                                     SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS Erhaltene, SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) 
                                                     AS keinAuftrag, SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS Bearb_NichAbg, 
                                                     SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS Abgesagt, Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) 
                                                     AS money) / cast(COUNT(*) AS Money) AS QuoteOffen, Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS money) 
                                                     / cast(COUNT(*) AS Money) AS QuoteErhalten, Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) 
                                                     AS Money) AS QuotekeinAuftrag, Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) 
                                                     AS QuoteBearb_NichAbg, Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) 
                                                     AS QuoteAbgesagt
                             FROM           dbo.T_User INNER JOIN
                                                     dbo.T_Obj ON dbo.T_User.UsID = RIGHT(dbo.T_Obj.UsIns, 8)
                             WHERE       dbo.T_Obj.VkId = @VKB AND year(EiDat) = @Jahr
                             GROUP BY month(EiDat)
UNION ALL
SELECT      year(Eidat) AS Monat, COUNT(*) AS Komplett, SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene, 
                        SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS Erhaltene, SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS keinAuftrag, 
                        SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS Bearb_NichAbg, SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS Abgesagt, 
                        Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteOffen, 
                        Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteErhalten, 
                        Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuotekeinAuftrag, 
                        Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteBearb_NichAbg, 
                        Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteAbgesagt
FROM          dbo.T_User INNER JOIN
                        dbo.T_Obj ON dbo.T_User.UsID = RIGHT(dbo.T_Obj.UsIns, 8)
WHERE      dbo.T_Obj.VkId = @VKB AND year(EiDat) = @Jahr
GROUP BY year(EiDat)
ORDER BY month(Eidat) END
Will er von mir die Skalarvariablen deklariert haben.

__________________

Gruß Matthias
magic1708 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 15:10   #10
hcscherzer
MOF Guru
MOF Guru
Standard

Seltsam.

Hast Du beide Views mal einzeln probiert (ohne UNION)?
Wenn year(eidat) Gruppierungsmerkmal ist, müsste doch eigentlich das Kriterium in HAVING statt in WHERE ... vielleicht liegt es daran?

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 15:14   #11
magic1708
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Die komplette Anweisung geht auch in einer Prozedur problemlos.

Nur wenn die Variablen dazu kommen haut er quer.

__________________

Gruß Matthias
magic1708 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.05.2019, 17:59   #12
hcscherzer
MOF Guru
MOF Guru
Standard

Zitat:

Nur wenn die Variablen dazu kommen haut er quer.

Auch, wenn Du die Prozedur auf dem SQL Server selbst (im Management Studio) ausführen lässt?
Oder nur, wenn es als PT Abfrage von Access aus aufgerufen wird?
In dem Falle würde mich interessieren, wie die Parameter übergeben werden.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.05.2019, 07:21   #13
magic1708
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Auf das Managment Studio habe ich keinen Zugriff.
ich habe eine Access Projekt Umgebung. In diesem Falle kein PT!
es ist eine adp Datei.
Alles was ich da anlege, legt sich auch auf dem Server direkt an.
Ich muss mal gucken ob ich mir mal Zugriff zum Studio bekommen kann.

__________________

Gruß Matthias
magic1708 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.05.2019, 08:30   #14
hcscherzer
MOF Guru
MOF Guru
Standard

Meine Frage war: hast Du beide einzeln ...

Meine Überlegung war ja, dass es in der zweiten Hälfte der UNION heissen müsste
Code:

SELECT      year(Eidat) AS Monat, 
...
WHERE      dbo.T_Obj.VkId = @VKB 
GROUP BY year(EiDat)
HAVING year(EiDat) = @Jahr
Eine zweite mögliche Fehlerquelle könnte das ORDER BY sein, denn MONTH(EiDat) kommt in der zweiten Hälfte nicht vor.
Das würde ich mal versuchen, wegzulassen.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.

Geändert von hcscherzer (07.05.2019 um 08:32 Uhr).
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.05.2019, 09:55   #15
magic1708
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Meinst du das dann so?

PHP-Code:

CREATE PROCEDURE dbo.qry_SP_Union_Statistik_Buero @VKB int, @Jahr int AS SELECT      Month(EiDat) AS MONATCOUNT(*) AS Komplett
                                                                                                                                                                                                          
SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene
                                                                                                                                                                                                          
SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END
                                                                                                                                                                                                          AS 
Erhaltene
                                                                                                                                                                                                          
SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END
                                                                                                                                                                                                          AS 
keinAuftrag
                                                                                                                                                                                                          
SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END
                                                                                                                                                                                                          AS 
Bearb_NichAbg
                                                                                                                                                                                                          
SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END
                                                                                                                                                                                                          AS 
Abgesagt
                                                                                                                                                                                                          
Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END
                                                                                                                                                                                                          AS 
money) / cast(COUNT(*) AS Money) AS QuoteOffen
                                                                                                                                                                                                          
Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END
                                                                                                                                                                                                          AS 
money) / cast(COUNT(*) AS Money) AS QuoteErhalten
                                                                                                                                                                                                          
Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END
                                                                                                                                                                                                          AS 
money) / cast(COUNT(*) AS Money) AS QuotekeinAuftrag
                                                                                                                                                                                                          
Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END
                                                                                                                                                                                                          AS 
money) / cast(COUNT(*) AS Money) AS QuoteBearb_NichAbg
                                                                                                                                                                                                          
Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END
                                                                                                                                                                                                          AS 
money) / cast(COUNT(*) AS Money) AS QuoteAbgesagt
                                                                                                                                                                                  FROM           dbo
.T_User INNER JOIN
                                                                                                                                                                                                          dbo
.T_Obj ON dbo.T_User.UsID RIGHT(dbo.T_Obj.UsIns8)
                                                                                                                                                                                  
WHERE       dbo.T_Obj.VkId 2340
                                                                                                                                                                                  GROUP BY month
(EiDat)
                                                                                                                                                                                  
HAVING       year(EiDat) = @Jahr
UNION ALL
SELECT      year
(Eidat) AS MonatCOUNT(*) AS KomplettSUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS Offene
                        
SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS ErhalteneSUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS keinAuftrag
                        
SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS Bearb_NichAbgSUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS Abgesagt
                        
Cast(SUM(CASE StaOb WHEN 'offen' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteOffen
                        
Cast(SUM(CASE StaOb WHEN 'Auftrag' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteErhalten
                        
Cast(SUM(CASE StaOb WHEN 'keinAuf' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuotekeinAuftrag
                        
Cast(SUM(CASE StaOb WHEN 'inBearb' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteBearb_NichAbg
                        
Cast(SUM(CASE StaOb WHEN 'Absage' THEN 1 ELSE 0 END) AS money) / cast(COUNT(*) AS Money) AS QuoteAbgesagt
FROM          dbo
.T_User INNER JOIN
                        dbo
.T_Obj ON dbo.T_User.UsID RIGHT(dbo.T_Obj.UsIns8)
WHERE      dbo.T_Obj.VkId 2340
GROUP BY year
(EiDat)
HAVING       year(EiDat) = @Jahr 
Bekomme ich auch, das ich die Skalarvariable Deklarieren soll

__________________

Gruß Matthias
magic1708 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.