SQL宣言クエリは1行の結果のみを返します

キリスト教徒

1つの識別子(ArtNr)とリターン(編集)を含む1つの大きなテキストチャンクを使用してデータベースから結果を取得しようとしていますが、(編集)列のテキストも文字列化する必要がありますか?(このように: "texttexttext"それは私がテキストの最初と最後に必要な ""です)

私は以下のクエリを考え出しましたが、応答で1行しか表示されません(4000のようになります)。もちろん、方法がわからないため、「」でキャプションが付けられた編集は表示されません:)

前もって感謝します!/キリスト教徒

USE MSPes2t 

DECLARE @result nvarchar(max) , @test nvarchar(255)

SELECT @result = AR.Edit , @test = AR.ArtNr

FROM DBO.AR

WHERE AR.ArtNr = '%'

ORDER BY AR.ArtNr

SELECT  @test AS artnr,
        @result AS edit

これは私が検索した結果です:このように:

ArtNr | Edit
------+----------------------------------------
12001 | "edit"
12002 | "edit"
28001 | "edit"
GarethD

次のクエリで目的の結果が得られるはずです(編集をどのように区切るかは正確にはわかりませんが、セミコロンを使用しました)。

SELECT  ArtNr = '12001',
        Edit = STUFF((  SELECT  ';"' + ar.Edit + '"'
                        FROM    dbo.AR
                        WHERE   AR.ArtNr = '12001'
                        FOR XML PATH(''), TYPE
                        ).value('.', 'NVARCHAR(MAX)'), 1, 1, '');

xml拡張FOR XML PATH()機能を使用して行を単一のフィールドに連結する方法の完全な説明はこの回答にあります。

複数のArtNoの編集を連結する必要がある場合は、次のようなものを使用できます。

SELECT  ar.ArtNr,
        Edit = STUFF((  SELECT  ';"' + ar2.Edit + '"'
                        FROM    dbo.AR AS ar2
                        WHERE   AR2.ArtNr = ar.ArtNr
                        FOR XML PATH(''), TYPE
                        ).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM    dbo.Ar
WHERE   ar.ArtNr IN ('12001', '12002')
GROUP BY ar.ArtNr;

簡単な作業例

DECLARE @AR TABLE (ArtNr VARCHAR(5), Edit NVARCHAR(MAX));
INSERT @AR (ArtNr, Edit)
VALUES ('12001', 'editeditedit'), ('12001', 'edit2 edit2'),
    ('12001', 'edit3'), ('12002', 'edit2 edit2');

SELECT  ar.ArtNr,
        Edit = STUFF((  SELECT  ';"' + ar2.Edit + '"'
                        FROM    @AR AS ar2
                        WHERE   AR2.ArtNr = ar.ArtNr
                        FOR XML PATH(''), TYPE
                        ).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM    @AR AS ar
WHERE   ar.ArtNr IN ('12001', '12002')
GROUP BY ar.ArtNr;

与える:

ArtNr | Edit
------+----------------------------------------
12001 | "editeditedit";"edit2 edit2";"edit3"
12002 | "editeditedit"

編集

必要な出力に基づいて、クエリは"編集フィールドの両端に連結するのと同じくらい簡単だと思います

SELECT  AR.ArtNr,
        '"' + AR.edit + '"' AS Edit
FROM    DBO.AR
WHERE   AR.ArtNr = '%'
ORDER BY ArtNr;

SQL Server 2012以降では使用できますCONCATが、このシナリオではあまり利点がありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQLクエリは、すべてではなく1つの結果/行のみを返します

分類Dev

SQLクエリ-1つの結果行に結合結果を表示します

分類Dev

CloudKitクエリ操作は300件の結果のみを返します

分類Dev

SQLクエリ-IDごとに1つの結果を返します

分類Dev

SQLクエリの結果がない場合は0を返します

分類Dev

Mysql 2つのテーブルを1つの出力に結合しますが、結果のサブクエリは複数の行を返します

分類Dev

用語クエリは0の結果を返しますelasticsearch

分類Dev

MySQLクエリは追加の結果を返します

分類Dev

クエリwinstonログは空の結果を返します

分類Dev

phpmysql更新クエリは空の結果を返します

分類Dev

そのクエリの結果に基づいて(Eloquentまたは生のSQLを使用して)クエリの一部を実行/返す方法は?

分類Dev

SQLこれはどのように起こりますか?-通常は1つの結果のみを返すクエリは、WHERE句内に配置すると、実際には複数の結果になりました。

分類Dev

knp paginatorは0の結果を返しますが、クエリは5の結果を返します

分類Dev

私のクエリは、1を返す必要があるときに0の結果を返します

分類Dev

SQLクエリは2つの結果を返しますが、c#Webページに表示される結果は1つだけです

分類Dev

t-sql2は1つの結果セットをクエリします

分類Dev

group_concatを使用したクエリは、1行のみを返します

分類Dev

PHPおよびMySQLの動的クエリは、where句のない結果のみを返します

分類Dev

SELECT INNERJOINは1つの結果のみを返します

分類Dev

ElasticseachMultisearchは1セットの結果のみを返します

分類Dev

Prolog述語は1つの結果のみを返します

分類Dev

BeautifulSoupは1つの結果のみを返します

分類Dev

SQLはクエリを変更して、すべてのユーザーの結果を返します

分類Dev

このSQLクエリはどのようにして同じid_productの結果を返しますか?

分類Dev

MySQLクエリの結果は、結果に含まれるべき一部の行を返しません

分類Dev

Mysqlサブクエリは、リストに複数のIDがある場合でも、1つの結果のみを返します。

分類Dev

Apache Ignite sqlクエリは、データベースからの完全な結果ではなく、キャッシュの内容のみを返します

分類Dev

SQL-MAXは、複数の列をクエリすると複数の結果を返します

分類Dev

テーブルに値をMoodleしませんが、クエリ結果の数は1を返します

Related 関連記事

  1. 1

    SQLクエリは、すべてではなく1つの結果/行のみを返します

  2. 2

    SQLクエリ-1つの結果行に結合結果を表示します

  3. 3

    CloudKitクエリ操作は300件の結果のみを返します

  4. 4

    SQLクエリ-IDごとに1つの結果を返します

  5. 5

    SQLクエリの結果がない場合は0を返します

  6. 6

    Mysql 2つのテーブルを1つの出力に結合しますが、結果のサブクエリは複数の行を返します

  7. 7

    用語クエリは0の結果を返しますelasticsearch

  8. 8

    MySQLクエリは追加の結果を返します

  9. 9

    クエリwinstonログは空の結果を返します

  10. 10

    phpmysql更新クエリは空の結果を返します

  11. 11

    そのクエリの結果に基づいて(Eloquentまたは生のSQLを使用して)クエリの一部を実行/返す方法は?

  12. 12

    SQLこれはどのように起こりますか?-通常は1つの結果のみを返すクエリは、WHERE句内に配置すると、実際には複数の結果になりました。

  13. 13

    knp paginatorは0の結果を返しますが、クエリは5の結果を返します

  14. 14

    私のクエリは、1を返す必要があるときに0の結果を返します

  15. 15

    SQLクエリは2つの結果を返しますが、c#Webページに表示される結果は1つだけです

  16. 16

    t-sql2は1つの結果セットをクエリします

  17. 17

    group_concatを使用したクエリは、1行のみを返します

  18. 18

    PHPおよびMySQLの動的クエリは、where句のない結果のみを返します

  19. 19

    SELECT INNERJOINは1つの結果のみを返します

  20. 20

    ElasticseachMultisearchは1セットの結果のみを返します

  21. 21

    Prolog述語は1つの結果のみを返します

  22. 22

    BeautifulSoupは1つの結果のみを返します

  23. 23

    SQLはクエリを変更して、すべてのユーザーの結果を返します

  24. 24

    このSQLクエリはどのようにして同じid_productの結果を返しますか?

  25. 25

    MySQLクエリの結果は、結果に含まれるべき一部の行を返しません

  26. 26

    Mysqlサブクエリは、リストに複数のIDがある場合でも、1つの結果のみを返します。

  27. 27

    Apache Ignite sqlクエリは、データベースからの完全な結果ではなく、キャッシュの内容のみを返します

  28. 28

    SQL-MAXは、複数の列をクエリすると複数の結果を返します

  29. 29

    テーブルに値をMoodleしませんが、クエリ結果の数は1を返します

ホットタグ

アーカイブ