Forums Neueste Beiträge
 

Query Problem

27/03/2009 - 15:03 von Steffen | Report spam
Hallo,
ich schlage mich mit einem Query rum und bekomme es einfach nicht zum
laufen. Vieleicht hat jemand eine Idee. Google etc hat mir leider nicht
weiterhelfen können. Hier mein Code :

DECLARE @xyz numeric(18,0)
SELECT @xyz = T0.Name from [dbo].[@sufu] t0 where T0.U_Name = [%1]

SELECT CASE WHEN @xyz = '1' THEN
(SELECT DISTINCT T0.[CardCode] , T0.[CardName], T1.[Name], T2.[Street],
T2.[ZipCode], T2.[City], T0.[U_altekdnr] FROM OCRD T0 INNER JOIN OCPR T1 ON
T0.CardCode = T1.CardCode INNER JOIN CRD1 T2 ON T0.CardCode = T2.CardCode
WHERE T2.[ZipCode] LIKE '[%var]%%')

WHEN @xyz = '2' THEN
(SELECT DISTINCT T0.[CardCode] , T0.[CardName], T1.[Name], T2.[Street],
T2.[ZipCode], T2.[City], T0.[U_altekdnr] FROM OCRD T0 INNER JOIN OCPR T1 ON
T0.CardCode = T1.CardCode INNER JOIN CRD1 T2 ON T0.CardCode = T2.CardCode
WHERE T1.[Name] LIKE '[%var]%%')

WHEN @xyz = '3' THEN
(SELECT DISTINCT T0.[CardCode] , T0.[CardName], T1.[Name], T2.[Street],
T2.[ZipCode], T2.[City], T0.[U_altekdnr] FROM OCRD T0 INNER JOIN OCPR T1 ON
T0.CardCode = T1.CardCode INNER JOIN CRD1 T2 ON T0.CardCode = T2.CardCode
WHERE T0.[U_altekdnr] LIKE '[%var]%%')

END

Es handelt sich um eine Abfrage die ich für SAP B1 brauche. Leider kann man
in dem tollen Programm nicht nach PLZ oder Kundennamen suchen. Deswegen das
obere Script.

Grüße Steffen
 

Lesen sie die antworten

#1 Christoph Muthmann
27/03/2009 - 15:17 | Warnen spam
Steffen wrote:
Hallo,
ich schlage mich mit einem Query rum und bekomme es einfach nicht zum
laufen. Vieleicht hat jemand eine Idee. Google etc hat mir leider
nicht weiterhelfen können. Hier mein Code :

DECLARE @xyz numeric(18,0)
SELECT @xyz = T0.Name from [dbo].[@sufu] t0 where T0.U_Name = [%1]

SELECT CASE WHEN @xyz = '1' THEN
(SELECT DISTINCT T0.[CardCode] , T0.[CardName], T1.[Name],
T2.[Street], T2.[ZipCode], T2.[City], T0.[U_altekdnr] FROM OCRD T0
INNER JOIN OCPR T1 ON T0.CardCode = T1.CardCode INNER JOIN CRD1 T2 ON
T0.CardCode = T2.CardCode WHERE T2.[ZipCode] LIKE '[%var]%%')

WHEN @xyz = '2' THEN
(SELECT DISTINCT T0.[CardCode] , T0.[CardName], T1.[Name],
T2.[Street], T2.[ZipCode], T2.[City], T0.[U_altekdnr] FROM OCRD T0
INNER JOIN OCPR T1 ON T0.CardCode = T1.CardCode INNER JOIN CRD1 T2 ON
T0.CardCode = T2.CardCode WHERE T1.[Name] LIKE '[%var]%%')

WHEN @xyz = '3' THEN
(SELECT DISTINCT T0.[CardCode] , T0.[CardName], T1.[Name],
T2.[Street], T2.[ZipCode], T2.[City], T0.[U_altekdnr] FROM OCRD T0
INNER JOIN OCPR T1 ON T0.CardCode = T1.CardCode INNER JOIN CRD1 T2 ON
T0.CardCode = T2.CardCode WHERE T0.[U_altekdnr] LIKE '[%var]%%')

END

Es handelt sich um eine Abfrage die ich für SAP B1 brauche. Leider
kann man in dem tollen Programm nicht nach PLZ oder Kundennamen
suchen. Deswegen das obere Script.



Hallo Steffen,
mir fallen da zwei Alternativen ein, wobei die erste wahrscheinlich für den
Optimizer einfacher ist. Den Inhalt des Select habe ich jetzt mal nicht
weiter untersucht:
If @xyz = '1'
begin
SELECT DISTINCT T0.[CardCode] , T0.[CardName], T1.[Name],
T2.[Street], T2.[ZipCode], T2.[City], T0.[U_altekdnr] FROM OCRD T0
INNER JOIN OCPR T1 ON T0.CardCode = T1.CardCode INNER JOIN CRD1 T2 ON
T0.CardCode = T2.CardCode WHERE T2.[ZipCode] LIKE '[%var]%%';
end;

If @xyz = '2' ...

Die zweite hat den Case im Where:
SELECT CASE WHEN @xyz = '1' THEN
(SELECT DISTINCT T0.[CardCode] , T0.[CardName], T1.[Name],
T2.[Street], T2.[ZipCode], T2.[City], T0.[U_altekdnr] FROM OCRD T0
INNER JOIN OCPR T1 ON T0.CardCode = T1.CardCode INNER JOIN CRD1 T2 ON
T0.CardCode = T2.CardCode
WHERE (case
when @xyz = '1' THEN T2.[ZipCode]
when @xyz = '2' THEN T1.[Name]
when @xyz = '3' THEN T0.[U_altekdnr]
) LIKE '[%var]%%')

Einen schönen Tag noch,
Christoph
Microsoft SQL Server MVP
http://www.insidesql.org

Ähnliche fragen