私はこの文で除算演算子を適用しようとしていますが、それは誤りに'/'付近の構文が正しくありません。 SQL Serverの2012
付近に正しくない構文 '/' 私はSQL Server 2012の
を使用しています(select count(distinct emploc) as test from location)/ (select count(emploc) from location)
をスローします
私はこの文で除算演算子を適用しようとしていますが、それは誤りに'/'付近の構文が正しくありません。 SQL Serverの2012
付近に正しくない構文 '/' 私はSQL Server 2012の
を使用しています(select count(distinct emploc) as test from location)/ (select count(emploc) from location)
をスローします
あなたは、式の前にselect
が必要になります。
select ((select count(distinct emploc) as test from location)/
(select count(emploc) from location)
)
SQLクエリはselect
で始まります。いくつかのケースでは、(select . . .
から始めることができます(union all
を使用している場合など)。 SQLパーサーは算術式の汎用式パーサーではないため、select 2/1
は機能しますが、2/1
は機能しません。
あなたは、単一のクエリでそれを使用することができます
SELECT count(distinct emploc)/convert(float,count(emploc)) as Test from location
それは、あなたが
select count(distinct emploc)/count(emploc) from location
のような単一のクエリでそれを作るカムものの、メッセージ102、レベル15をPROC を実行しながら、私はこのエラーを見つけた
以下SELECT
(select count(distinct emploc) as test from location)/(select count(emploc) from location)
ようにする必要があります状態1、プロシージャproc1、行7 '('。 ここでスクリプトwher wkとddが不正確な構文を見つけました プロシージャproc1を作成します @name VARCHAR(50)、 - D @fileDate VARCHAR(256)、 - バックアップ・ファイルのパス @path VARCHAR(256)、 - バックアップ・ファイルのパス @databasepath VARCHAR(256)、 - バックアップ・ファイルのパス @fileName VARCHAR(256) - バックアップのファイル名 @fileDate VARCHAR 、 - ファイル名に使用 @DeleteDateBAK DATETIME = DATEADD(wk、-1、GETDATE())、 - カットオフの日付 @DeleteDateTRN DATETIME = DATEADD(dd、-2、GETDATE()); - カットオフ日付 DECLARE @name VARCHAR(50); - データベース名 DECLARE @path VARCHAR(256); - バックアップ・ファイルのパス DECLARE @databasepath VARCHAR(256); - バックアップ・ファイルのパス DECLARE @fileName VARCHAR(256); - バックアップのファイル名 DECLARE @fileDate VARCHAR(200); - ファイル名に使用 DECLARE @DeleteDateBAK DATETIME = DATEADD(wk、-1、GETDATE()); - カットオフ日付 DECLARE @DeleteDateTRN DATETIME = DATEADD(dd、-2、GETDATE()); - カットオフの日付
- バックアップへのパス。 SET @path = 'G:\ backup \ DXC_bkp_plan &メンテナンス\';
- ファイル名に含める日付を取得します。 SELECT @fileDate = REPLACE(置換(置換)(VARCHAR(20)、GETDATE()、120)、 ' - '、 '')、 ''、 '')、 ':'、 '') SET @fileDate = @fileDate + '_'SET @fileDate = @fileDate +(CONVERT(VARCHAR(200)、ABS CONVERT(BIGARY、CONVERT(BINARY(8)、NEWID())))%)10000000))
- サーバー上の各データベースを動的に取得します。 DECLARE db_cursor CURSOR FOR SELECT名 FROM master.sys。データベース「WHERE name 'NOT'( 'master'、 'model'、 'msdb'、 'tempdb'、 'ApexSQLBackupCentralRepository'、 'Career_Progression'、 'CensusDB'、 'CONTECTUAL'、 'CONTROL'、 'DASHBOARD'、 'DAY_DASHBOARD' 「DGET_DWH」「DH」「Dummy_DS」「GOA」「GoogleAnalytics」「INSTDB」「Mig」「Migrated」「Qual」「RND」「dbdgetEnglishForHP-CMS」「DGET_DWH」「RND」 、 'TripuraNCS'、 'Test');
OPEN db_cursor; db_cursorの次のFETCH INTO @name;
- リストをループして各データベースをバックアップします。 WHILE @@ FETCH_STATUS = 0 BEGIN - パスとファイル名を作成します。 SET @databasepath = @path + @name + N '\'; SET @fileName = @databasepath + @name + 'バックアップ' + @fileDate + '.BAK';
EXEC master.dbo.xp_create_subdir @databasepath
-- Backup the database.
BACKUP DATABASE @name TO DISK = @fileName WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10;
-- Purge old backup files from disk.
EXEC master.sys.xp_delete_file 0,@path,'BAK',@DeleteDateBAK,1;
EXEC master.sys.xp_delete_file 0,@path,'TRN',@DeleteDateTRN,1;
-- Loop to the next database.
FETCH NEXT FROM db_cursor INTO @name;
終了 - クリーンアップ。 CLOSE db_cursor; DEALLOCATE db_cursor;
先頭に別のレベルの「SELECT」を追加します。 – dotNET