![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
どうしても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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
ストアドプロシジャからストアドプロシジャを呼ぶには?
Oracle
-
T-SQLで任意の箇所で強制終了する方法
SQL Server
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
-
4
2つのテーブルから条件に一致しないデータ抽出
SQL Server
-
5
VIEWに対してWHERE句をつける
MySQL
-
6
TRY CATCHでシステムエラーを検知できない
SQL Server
-
7
特定条件でWHERE句の条件を変更したい
SQL Server
-
8
SQLのエラー(~付近に不適切な構文があります)
SQL Server
-
9
エクセル: セルの枠を超えて表示
Excel(エクセル)
-
10
ストアドプロシージャ_カーソルのヒット件数
その他(データベース)
-
11
含まない言い方ってどうしたらいいんでしょうか
日本語
-
12
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
13
GROUP BYを行った後に結合したい。
Oracle
-
14
列名に変数を使うことはできないのでしょうか?
SQL Server
-
15
SQLServer2005のSQL文での別名の取り扱い
SQL Server
-
16
副問合せの書き方について
SQL Server
-
17
ストアドプロシージャのSET文について
SQL Server
-
18
カラムの存在チェック
SQL Server
-
19
IFで条件を分岐させてのINSERT(ストアド)。
SQL Server
-
20
LIKEの右側にカラムを指定できますか?
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
sqlで文字列を最後に追加したい
-
Access2000環境に対応するMid関...
-
PostgreSqlでFunctionの作成に...
-
Access2000でDAOを使用したとき...
-
全ストアドを対象に文字列を置...
-
SQLserverのIF文について
-
エクセルからSQLサーバー ...
-
エクセルマクロで指定範囲内の...
-
BULK INSERTで失敗
-
ストアドの戻り値(配列)について
-
ACCESS2000ディスクまたはネッ...
-
VB6より長文INSERT文でORA1756...
-
SQLServerが存在しないか、アク...
-
ACCESSで作成したアプリケーシ...
-
SQL SERVER の UNION ALL と GR...
-
SQLServerのエラー1069について
-
DB2でselectは出来るが、update...
-
バッチファイルからのBCP起動に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracle 8i コンマ(,)を含むデ...
-
SQLのエラー(~付近に不適切な...
-
エクセルマクロで指定範囲内の...
-
GROUP BYでエラーが発生
-
ACCESSで作成したアプリケーシ...
-
PostgreSqlでFunctionの作成に...
-
ACCESS ADOでupdateが効かない
-
オブジェクト名 '<table>' が無...
-
sqlで文字列を最後に追加したい
-
バッチファイルからのBCP起動に...
-
Access2000環境に対応するMid関...
-
SQLserverのIF文について
-
ACCESS2000ディスクまたはネッ...
-
エクセルからSQLサーバー ...
-
エクセルのグループボックス枠...
-
SQLServerが存在しないか、アク...
-
Accessのレポートが新規作成で...
-
何も表示されない実行時エラー...
-
分散トランザクションを開始で...
-
レポートが開けない。
おすすめ情報