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

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

11
LEFT OUTER JOINはどのようにして左のテーブルにあるよりも多くのレコードを返すことができますか?
私は非常に基本的なLEFT OUTER JOINを使用して、左側のテーブルのすべての結果と、より大きなテーブルのいくつかの追加情報を返します。左側のテーブルには4935レコードが含まれていますが、それを追加テーブルにLEFT OUTER JOINすると、レコード数が大幅に増えます。 LEFT OUTER JOINが左のテーブルのすべてのレコードを、右のテーブルの一致したレコードと一致しないすべての行のnull値とともに返すことは、私が知っている限り絶対的な福音です。左の表にあるよりも多くの行を返すことは不可能ですが、それはまったく同じです。 SQLクエリは次のとおりです。 SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID FROM SUSP.Susp_Visits LEFT OUTER JOIN DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum おそらく、構文に誤りを犯したか、LEFT OUTER JOINの理解が不完全である可能性があります。うまくいけば、これがどのように発生するのか説明できますか? 追記 素晴らしい回答をありがとう、左外部結合の私の理解ははるかに良くなりましたが、誰でもこのクエリを変更して、左のテーブルに存在するのと同じ数のレコードのみが返されるようにする方法を提案できますか? このクエリは純粋にレポートを生成するためのものであり、重複する一致は単に問題を混乱させます。 /追記

5
SQL Server 2008でユーザー定義テーブルタイプの存在を確認する方法
ユーザー定義のテーブルタイプがあります。パッチOBJECT_ID(name, type)機能で編集する前に、その存在を確認したい。 ユーザー定義のテーブルタイプに列挙typeから何を渡す必要がありますか? N'U' ユーザー定義テーブルのように動作しません、すなわち IF OBJECT_ID(N'MyType', N'U') IS NOT NULL

7
SQL JOIN対INのパフォーマンス?
JOINまたはINを使用すると正しい結果が得られる場合があります...通常、どちらの方がパフォーマンスがよく、その理由は何ですか。実行しているデータベースサーバーによって異なりますか。(私はMSSQLを使用しています)


23
挿入更新トリガー挿入または更新かどうかを判断する方法
テーブルAに挿入、更新トリガーを記述する必要があります。これにより、テーブルAの列(たとえば、Col1)に挿入/更新された値のような値が1つの列(たとえば、Desc)にあるテーブルBからすべての行が削除されます。UpdateとInsertの両方のケースを処理できるようにするにはどうすればよいでしょうか。トリガーが更新または挿入のために実行されるかどうかをどのように判断しますか?


15
SQL Serverで先行ゼロをトリミングするためのより良いテクニックは?
私はこれをしばらく使ってきました: SUBSTRING(str_col, PATINDEX('%[^0]%', str_col), LEN(str_col)) しかし最近、一致する「0」以外の文字が見つからないため、「00000000」などのすべての「0」文字を含む列に問題が見つかりました。 私が見た別のテクニックは使用することTRIMです: REPLACE(LTRIM(REPLACE(str_col, '0', ' ')), ' ', '0') 埋め込まれたスペースがある場合、スペースが「0」に戻されるとスペースが「0」に変わるため、これには問題があります。 私はスカラーUDFを回避しようとしています。SQL Server 2005では、UDFに関するパフォーマンスの問題がたくさん見つかりました。

13
プログラムでID列の値を変更するにはどうすればよいですか?
Test列を持つテーブルを含むMS SQL 2005データベースがありますID。IDID列です。 このテーブルに行があり、それらすべてに対応するIDの自動インクリメント値があります。 次に、このテーブルのすべてのIDを次のように変更します。 ID = ID + 1 しかし、これを行うとエラーが発生します。 ID列 'ID'を更新できません。 私はこれを試しました: ALTER TABLE Test NOCHECK CONSTRAINT ALL set identity_insert ID ON しかし、これは問題を解決しません。 この列にIDを設定する必要がありますが、値も時々変更する必要があります。だから私の質問は、このタスクを達成する方法です。

6
LinqからSQL:複数の左外部結合
LINQ to SQLを使用して複数の左外部結合を使用する方法を理解するのに問題があります。1つの左外部結合の使用方法を理解しています。VB.NETを使用しています。以下は私のSQL構文です。 T-SQL SELECT o.OrderNumber, v.VendorName, s.StatusName FROM Orders o LEFT OUTER JOIN Vendors v ON v.Id = o.VendorId LEFT OUTER JOIN Status s ON s.Id = o.StatusId WHERE o.OrderNumber >= 100000 AND o.OrderNumber <= 200000


3
INSERT INTOとWITH / CTEの組み合わせ
非常に複雑なCTEがあり、結果を物理テーブルに挿入したいと思います。 以下は有効ですか? INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos ( BatchID, AccountNo, APartyNo, SourceRowID ) WITH tab ( -- some query ) SELECT * FROM tab 関数を使用して、このCTEを作成し、再利用できるようにすることを考えています。何かご意見は?

2
シンプルに保ち、クエリで複数のCTEを実行する方法
この単純なT-SQLクエリを使用すると、テーブルから一連の列が出力され、他の関連テーブルの情報も結合されます。 私のデータモデルは単純です。参加者と一緒に予定されているイベントがあります。各イベントに参加する参加者の人数を知る必要があります。 これに対する私の解決策は、スケジュールされたイベントをグループ化し、参加者の数をカウントするCTEを追加することです。 これにより、予定されているイベントごとにその情報に参加できます。クエリをシンプルに保つ。 クエリを単純にしたいのですが、将来、単純なクエリ中に一時的な結果にアクセスできるようにする必要がある場合はどうすればよいですか? 複数のCTEを持つことができてもできない場合は、本当にそれを望みます。ここに私のオプションは何ですか? ビューを除外し、アプリケーションデータレイヤーで処理を実行しました。SQLクエリを分離することを好みます。

4
T-SQL-デフォルトのパラメーターを持つ関数
私はこのスクリプトを持っています: CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 ) RETURNS BIT AS BEGIN IF EXISTS ( bla bla bla ) RETURN 1; RETURN 0; END GO このように手順で使用したい: IF dbo.CheckIfSFExists( 23 ) = 0 SET @retValue = 'bla bla bla'; しかし、私はエラーが出ます: プロシージャまたは関数dbo.CheckIfSFExistsに指定された引数の数が不十分です。 なぜ動作しないのですか?

8
SQL Serverで定数1または0のビットを暗示する
selectステートメントでフィールド値として使用される場合、1または0をビットとして表すことは可能ですか? 例えば この場合、ステートメント(selectステートメントの一部)はICourseBasedの型がintです。 case when FC.CourseId is not null then 1 else 0 end as IsCoursedBased それをビット型にするには、両方の値をキャストする必要があります。 case when FC.CourseId is not null then cast(1 as bit) else cast(0 as bit) end as IsCoursedBased 毎回キャストすることなく、値をビット型として表現する簡単な方法はありますか? (私はMS SQL Server 2005を使用しています)
154 sql  sql-server  tsql  bit 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.