2

SQL Server では、カーソルを使用してこれを行うことができます (結果セットの各行をループして文字列を作成します)。しかし、SQLiteで同じことを行う方法がわかりません。このタスクは、私が知る限り、列に変換する正確な行を知る必要がある、いわゆるピボットとは異なります。私の場合は異なります。指定された列のすべての値を文字列に選択したい (そして、1 行の列として選択できます)。この列は、SELECT クエリに応じてさまざまな値を持つことができます。これがどのように見えるかのサンプルです:

A    |    B    
------------
1    |    0
8    |    1
3    |    2
...     ....

列 A のすべての値をこの「183...」のような文字列に選択したい (または「1,8,3,...」でも問題ありません)。

これは別の SELECT の列として使用できます。これを実装する必要があるのは、(列 A の各行にある) すべてのサブ情報を別の行のコンマ区切りリストとして表示する必要があるためです。

これについては何もわかりません。手続き型のステートメント(プロシージャに配置するなど)が必要なようですが、SQLiteは、ループ、変数宣言でできることを大幅に制限しています...私は本当に立ち往生しています。この種のタスクは、データベースのプログラミングでは非常に一般的であり、私がそれを拒否する理由はありません。

助けてください、あなたの助けは大歓迎です!ありがとう!

4

2 に答える 2

11

列 A のすべての値を単一のレコードに取得しようとしているだけの場合は、次を使用しますGROUP_CONCAT

select group_concat(a, ',')
from yourtable

SQL フィドルのデモ

于 2013-04-21T14:32:17.790 に答える
0

主な問題は、アプリケーション プログラマーのように考えていることです。SQL は多くのことを行います。

SELECT * 
  FROM tableA
 WHERE A IN (SELECT A 
                  FROM tableB)

カーソル、ストアド プロシージャ、および複数のクエリに頼る必要はありません。

于 2013-04-21T14:35:40.127 に答える