
どうしてもIF文がうまくいきません
IF文の中にIFを入れ子していますそのIFが複数の条件があります
今までACCESSではELSEIFで条件をいくらでも指定できたのですがSQLの場合はエラーになってしまいます
ご教授おねがいします
------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER FUNCTION [dbo].[scfc_part端数処理]
( @PTHASU nvarchar(10), @haken nvarchar(10) )
RETURNS
real
AS
BEGIN
DECLARE @PARTT real
DECLARE @PARTT_H real
if (not(@PTHASU is null))
if @haken='派遣' or @haken='臨時'
if substring(@PTHASU,4,2)>= 50
SET @PARTT = convert(int,LEFT(@PTHASU,2)+1)*60
--ここをいれるとエラー IF substring(@PTHASU,4,2)< 50 and substring(@PTHASU,4,2)>= 20
--ここをいれるとエラー SET @PARTT = convert(int,LEFT(@PTHASU,2)*60 +30
--ここをいれるとエラー if substring(@PTHASU,4,2)< 20
--ここをいれるとエラー SET @PARTT = convert(int,LEFT(@PTHASU,2)*60
ELSE
SET @PARTT = convert(real,LEFT(@PTHASU,2))*60 + convert(real,substring(@PTHASU,4,2))*1
ELSE
SET @PARTT= 0
SET @PARTT_H = convert(real,(floor(@PARTT/60*10000)/10000))
RETURN @PARTT_H
END
No.1ベストアンサー
- 回答日時:
マニュアルを読みましょう。
if 条件
真の時の命令文
else
偽の時の命令文
で、真または偽で命令文を2個以上書く場合は、begin~endでブロックを構成する必要があります。
参考URL:http://msdn2.microsoft.com/ja-jp/library/ms18271 …
すみません
SET @PARTT = convert(int,LEFT(@PTHASU,2)*60 +30のかっこがぬけていていました
ありがとうございました
No.2
- 回答日時:
こんな感じかな。
if a > b
begin
if b > c
begin
if c > d
begin
set @ABC=1
end
else
begin
set @ABC=2
end
end
else
begin
set @ABC=3
end
end
else
begin
set @ABC=4
end
すみません
SET @PARTT = convert(int,LEFT(@PTHASU,2)*60 +30のかっこがぬけていていました
以下のように完成できました
ありがとうございました
--------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER FUNCTION [dbo].[scfc_part端数処理]
( @PTHASU nvarchar(10), @haken nvarchar(10) )
RETURNS
real
AS
BEGIN
DECLARE @PARTT real
DECLARE @PARTT_H real
if (not(@PTHASU is null))
if @haken='派遣' or @haken='臨時'
begin
if substring(@PTHASU,4,2)>= 50
SET @PARTT = convert(real,LEFT(@PTHASU,2)+1)*60
else
IF substring(@PTHASU,4,2)< 50 and substring(@PTHASU,4,2)>= 20
SET @PARTT = convert(real,LEFT(@PTHASU,2))*60 +30
else
SET @PARTT = convert(real,LEFT(@PTHASU,2))*60
end
ELSE
SET @PARTT = convert(real,LEFT(@PTHASU,2))*60 + convert(real,substring(@PTHASU,4,2))*1
ELSE
SET @PARTT= 0
SET @PARTT_H = convert(real,(floor(@PARTT/60*10000)/10000))
RETURN @PARTT_H
END
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracle 8i コンマ(,)を含むデ...
-
ACCESS ADOでupdateが効かない
-
SQLのエラー(~付近に不適切な...
-
何も表示されない実行時エラー...
-
クエリの存在チェック
-
バッチファイルからのBCP起動に...
-
エクセルマクロで指定範囲内の...
-
オブジェクト名 '<table>' が無...
-
Oracle SQL*Plus Dateタイプのi...
-
SQLServerが存在しないか、アク...
-
sqlで文字列を最後に追加したい
-
ACCESSで作成したアプリケーシ...
-
SQL ServerのSQL実行時のエラー...
-
Dcountの条件文について(ACCES...
-
結合と集計、同一のステートメ...
-
複数の表の外部結合について
-
CSV出力時、件数によりエラーと...
-
Access Excelへ出力時にエラー
-
エクセルのグループボックス枠...
-
SQLServerのエラー1069について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
PostgreSqlでFunctionの作成に...
-
GROUP BYでエラーが発生
-
Access2000環境に対応するMid関...
-
sqlで文字列を最後に追加したい
-
何も表示されない実行時エラー...
-
バッチファイルからのBCP起動に...
-
ACCESS ADOでupdateが効かない
-
ACCESS2000ディスクまたはネッ...
-
オブジェクト名 '<table>' が無...
-
エクセルのグループボックス枠...
-
エクセルマクロで指定範囲内の...
-
VB6より長文INSERT文でORA1756...
-
SQLServerが存在しないか、アク...
-
エクセルからSQLサーバー ...
-
ACCESSで作成したアプリケーシ...
-
SQLServer・ストアドプロシージ...
-
クエリの存在チェック
-
分散トランザクションを開始で...
おすすめ情報