/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MSSQL 2k] Betinget returværdi fra stored ~
Fra : Jesper Stocholm


Dato : 26-03-04 16:44

Jeg skal have lavet en stored procedure, der laver et udtræk fra en tabel,
der returnerer en enkelt række (filter er den primære nøgle). Hvis felt1 er
en bestemt værdi og felt2 er null, så skal der returneres 'd' ellers
returneres ''

Hvordan laver jeg det? Jeg har prøvet med

CREATE PROCEDURE pn_GetTendanceLinePackageCountUnit
      @pharmacyID_         INT,
      @tendanceID_         INT,
      @tendanceLineID_      INT,
      @tendanceLineTypeID_       INT,
      @tendanceTypeIDDosis_    CHAR(3)
AS
   SELECT
       IF t.TendanceTypeID = 'dosis' and t.FeeTypeID is null
           'd'
       ELSE
           ''
       END

   FROM TendanceLine t
   WHERE
      t.PharmacyID = @pharmacyID_
      AND t.TendanceID = @tendanceID_
      AND t.tendanceLineID = @tendanceLineID_
      AND t.TendanceLineTypeID = @tendanceLineTypeID_

Men - surprise - det virker ikke. Jeg får en syntaksfejl ved "ELSE" - men
jeg kan ikke gennemskue hvorfor.

--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

 
 
Jesper Stocholm (26-03-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 26-03-04 16:52

Jesper Stocholm <j@stocholm.invalid> wrote in
news:Xns94B8AA41564Bstocholmdk@130.225.247.90:

> Jeg skal have lavet en stored procedure, der laver et udtræk fra en
> tabel, der returnerer en enkelt række (filter er den primære nøgle).
> Hvis felt1 er en bestemt værdi og felt2 er null, så skal der
> returneres 'd' ellers returneres ''
>
> Hvordan laver jeg det? Jeg har prøvet med
>
> CREATE PROCEDURE pn_GetTendanceLinePackageCountUnit
> @pharmacyID_ INT,
> @tendanceID_ INT,
> @tendanceLineID_ INT,
> @tendanceLineTypeID_ INT,
> @tendanceTypeIDDosis_ CHAR(3)
> AS
> SELECT
> IF t.TendanceTypeID = 'dosis' and t.FeeTypeID is null
> 'd'
> ELSE
> ''
> END
> FROM TendanceLine t
> WHERE
> t.PharmacyID = @pharmacyID_
> AND t.TendanceID = @tendanceID_
> AND t.tendanceLineID = @tendanceLineID_
> AND t.TendanceLineTypeID = @tendanceLineTypeID_
>
> Men - surprise - det virker ikke. Jeg får en syntaksfejl ved "ELSE" -
> men jeg kan ikke gennemskue hvorfor.

.... og et øjeblik efter fandt jeg svaret ...

CREATE PROCEDURE pn_GetTendanceLinePackageCountUnit
      @pharmacyID_         INT,
      @tendanceID_         INT,
      @tendanceLineID_      INT,
      @tendanceLineTypeID_       INT,
      @tendanceTypeIDDosis_    CHAR(3),
      @tendanceLineFeeTypeID_   CHAR(3)
AS
   SELECT
   'PackageCountUnit' =
   CASE
      WHEN t.TendanceTypeID= @tendanceTypeIDDosis_
       AND t.FeeTypeID <> @tendanceLineFeeTypeID_ THEN 'd'
      ELSE ''
   END   
   FROM TendanceLine t
   WHERE
      t.PharmacyID = @pharmacyID_
      AND t.TendanceID = @tendanceID_
      AND t.tendanceLineID = @tendanceLineID_
      AND t.TendanceLineTypeID = @tendanceLineTypeID_



.... beklager forstyrrelsen ...

--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Søg
Reklame
Statistik
Spørgsmål : 177493
Tips : 31966
Nyheder : 719565
Indlæg : 6408479
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste