タグ付けされた質問 「tsql」

T-SQL(Transact Structured Query Language)は、Sybase ASEおよびMicrosoft SQL ServerでサポートされるSQL機能の拡張です。MySQL、PostgreSql、Oracle(Pl / SQL)関連のクエリには、このタグを使用しないでください。LINQを使用して記述されているSQLコードもこのタグの一部ではないことに注意してください。このタグは、Microsoft SQL Serverを使用した高度なSQLプログラミング用に特別に作成されました。

7
MIN集計関数をBITフィールドに適用する
次のクエリを書きたい: SELECT ..., MIN(SomeBitField), ... FROM ... WHERE ... GROUP BY ... 問題は、SQL Serverがそれを好まないことですOperand data type bit is invalid for min operator。ビットフィールドの最小値を計算したい場合、エラーが返されます。 次の回避策を使用できます。 SELECT ..., CAST(MIN(CAST(SomeBitField AS INT)) AS BIT), ... FROM ... WHERE ... GROUP BY ... しかし、もっとエレガントなものはありますか?(たとえば、私が知らないand、フィールド内のビット値の論理を評価する集計関数がある場合があります。)
82 sql  sql-server  tsql 

7
SQL Server ORDERBYの日付とnullの最後
日付で注文しようとしています。最新の日付を最初に入力してください。これは簡単ですが、nullのレコードが多数あり、日付のあるレコードの前にあります。 私はいくつかのことを試みましたが成功しませんでした: ORDER BY ISNULL(Next_Contact_Date, 0) ORDER BY ISNULL(Next_Contact_Date, 999999999) ORDER BY coalesce(Next_Contact_Date, 99/99/9999) 日付で注文してヌルを最後に入れるにはどうすればよいですか?データ型はsmalldatetimeです。

19
複数の列から最小値を選択するための最良の方法は何ですか?
SQL Server2005の次の表を考えます。 ID Col1 Col2 Col3 -- ---- ---- ---- 1 3 34 76 2 32 976 24 3 7 235 3 4 245 1 792 次の結果を生成するクエリを作成するための最良の方法は何ですか(つまり、最終列を生成するクエリ-各行のCol1、Col2、およびCol 3からの最小値を含む列)? ID Col1 Col2 Col3 TheMin -- ---- ---- ---- ------ 1 3 34 76 3 2 32 976 24 24 3 7 …

7
T-SQLのブール値「NOT」が「ビット」データ型で機能していませんか?
単一のブールNOT操作を実行しようとすると、MS SQL Server2005では次のブロックが機能しないようです。 DECLARE @MyBoolean bit; SET @MyBoolean = 0; SET @MyBoolean = NOT @MyBoolean; SELECT @MyBoolean; 代わりに、私はより成功しています DECLARE @MyBoolean bit; SET @MyBoolean = 0; SET @MyBoolean = 1 - @MyBoolean; SELECT @MyBoolean; それでも、これは否定のように単純なものを表現するための少しねじれた方法に見えます。 私は何かが足りないのですか?

1
デフォルトの制約を追加するためのコマンド
ストレートT-SQLを使用してデフォルトの制約を追加するには、少なくとも2つの方法があるようです。以下の2つの違いは、2番目のメソッドが制約の名前を具体的に作成し、最初のメソッドがSQL Serverによって生成された名前を持っていることだけです。 ALTER TABLE [Common].[PropertySetting] ADD DEFAULT ((1)) FOR [Active]; ALTER TABLE [Common].[PropertySetting] ADD CONSTRAINT [DF_PropertySetting_Active) DEFAULT ((1)) FOR [Active];


5
SQLの同じ行に整数変数と文字列を出力する
さて、私はTechnetでこれに対する答えを探しましたが、役に立ちませんでした。 2つの文字列変数を連結した整数変数を出力したいだけです。 これは私のコードで、実行されません: print 'There are ' + @Number + ' alias combinations did not match a record' このような基本的な機能のように思えますが、T-SQLでは不可能だとは想像もできませんでした。しかし、それが不可能な場合は、そのように言ってください。正解が見つからないようです。
81 sql  sql-server  tsql 

10
WHILEループのないクエリ
以下のような予定表があります。各予定は、「新規」または「フォローアップ」として分類する必要があります。(患者の)最初の予約から30日以内の(患者の)予約はフォローアップです。30日後、予定は再び「新規」になります。30日以内の予定はすべて「フォローアップ」になります。 現在、whileループと入力してこれを行っています。 WHILEループなしでこれを実現するにはどうすればよいですか? テーブル CREATE TABLE #Appt1 (ApptID INT, PatientID INT, ApptDate DATE) INSERT INTO #Appt1 SELECT 1,101,'2020-01-05' UNION SELECT 2,505,'2020-01-06' UNION SELECT 3,505,'2020-01-10' UNION SELECT 4,505,'2020-01-20' UNION SELECT 5,101,'2020-01-25' UNION SELECT 6,101,'2020-02-12' UNION SELECT 7,101,'2020-02-20' UNION SELECT 8,101,'2020-03-30' UNION SELECT 9,303,'2020-01-28' UNION SELECT 10,303,'2020-02-02'

1
CROSS APPLYがこのクエリで無効な列エラーを取得しないのはなぜですか?
一部のDMVをクエリするためのコードを書いています。SQLのバージョンによっては、一部の列がDMVに存在する場合と存在しない場合があります。を使用して特定のチェックをスキップする方法をオンラインで興味深い提案が見つかりましたCROSS APPLY。 以下のクエリは、欠落している可能性のある列のDMVを読み取るコードの例です。コードは列のデフォルト値を作成CROSS APPLYし、DMVから実際の列が存在する場合はそれを抽出するために使用します。 コードが抽出しようとする列BogusColumnは存在しません。以下のクエリでは無効な列名に関するエラーが生成されると思いますが、そうではありません。エラーなしでNULLを返します。 下のCROSS APPLY句が「無効な列名」エラーにならないのはなぜですか? declare @x int select @x = b.BogusColumn from ( select cast(null as int) as BogusColumn ) a cross apply ( select BogusColumn from sys.dm_exec_sessions ) b; select @x; CROSS APPLY別にクエリを実行する場合: select BogusColumn from sys.dm_exec_sessions; 無効な列名について予期されるエラーが発生します。 Msg 207, Level 16, State 1, Line 9 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.