2017-07-13 1 views
0
select 
MITARBEITER.NAME, 
MITARBEITER.GEHALT 
    from 
     MITARBEITER 
     where MITARBEITER.GEHALT = @minGehalt 
     DECLARE @minGehalt as INT 
     SET @minGehalt = (SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER) 
     EXEC @minGehalt 

@minGehaltは私の問題は、それがそのあなたは、あなたがそれを使用する前に変数を宣言する必要がSQL変数

+0

変数を使用する前に宣言する必要があります – SchmitzIT

答えて

0

クエリで@記号を使用すると、ある意味パラメータを使用します。パラメータはDECLAREコマンドを使用して宣言する必要があります

DECLARE @minGehalt int; 

ます。またSETコマンドを使用して値を設定することができます。

DECLARE @minGehalt int; 
SET @minGehalt = 1234; 

select 
..... 

またはあなたの例では:

DECLARE @minGehalt as INT 
SET @minGehalt = SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER 

select MITARBEITER.NAME,MITARBEITER.GEHALT 
from MITARBEITER 
where MITARBEITER.GEHALT = @minGehalt 
0

を宣言していないと言うで数

ある単純なテーブルで使用しています。これは動作するはず:

DECLARE @minGehalt as INT 
SET @minGehalt = SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER 

SELECT 
    MITARBEITER.NAME, 
    MITARBEITER.GEHALT 
FROM 
    MITARBEITER 
WHERE 
    MITARBEITER.GEHALT = @minGehalt 

(私はMySQLインスタンスが利用できていないとして、私はこれをテストしていませんが、これはトリックを行う必要があります)

0
DECLARE @minGehalt as INT 
DECLARE @maxGehalt as INT 
DECLARE @minName as varchar(30) 
DECLARE @maxName as varchar(30) 
SET @minGehalt = (SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER) 
SET @maxGehalt = (SELECT MAX(MITARBEITER.GEHALT) FROM MITARBEITER) 
SET @minName = (SELECT MITARBEITER.NAME FROM MITARBEITER WHERE MITARBEITER.GEHALT = @minGehalt) 
SET @maxName = (SELECT MITARBEITER.NAME FROM MITARBEITER WHERE MITARBEITER.GEHALT = @maxGehalt) 
select 
    concat(@minName, ' ', @minGehalt) as 'Minimaler Gehalt', 
    concat(@maxName, ' ', @maxGehalt) as 'Maximaler Gehalt' 

その方法で働いた、皆さんありがとう!