「通常の」クエリでは、次のように表示されるデータがあります。
Val1 Val2
---- ----
1 2
2 [blank]
3 2
4
5 1
6 3
..
96 1
ただし、私が欲しいのは次のようなものです(行数を12に制限する必要があります):
Val1 Val2 Val1 Val2 Val1 Val2 ... Val1 Val2
---- ---- ---- ---- ---- ----
1 2 13 1 25 [blank] ... 85 1
2 [blank] 14 1 26 3 ... 86 [blank]
.. ... ... ... ... ... ... ... ...
12 1 24 [blank] 36 2 ... 96 3
私にそれを与えるselectステートメントはありますか?私は SQL の専門家ではありませんが、次のようなことを (意味的に) 考えています。
select (select val1, val2 from dbtable where val1 < 13),
(select val1, val2 from dbtable where val1 > 12 and val1 < 25),
...
(select val1, val2 from dbtable where val1 > 84)
from dbtable
アップデート
dfb の sql の例への応答:
私がこれを行うとき:
SELECT t1.Val1, t1.Val2 FROM
(SELECT Val1, Val2, rownum() as rownum FROM dbTable) t1
INNER JOIN (SELECT Val1, Val2, rownum() as rownum FROM dbTable) t2
ON t1.rownum/2 == t2.rownum/2
... 「期待される場所に FROM キーワードが見つかりません」というメッセージが表示されます
そして、これを行うと(「rownum()」のものを削除します):
SELECT t1.Val1, t1.Val2 FROM
(SELECT Val1, Val2 FROM dbTable) t1
INNER JOIN (SELECT Val1, Val2 FROM dbTable) t2
ON t1.rownum/2 == t2.rownum/2
... 「ORA-01747: 無効な user.table.column、table.column、または列の指定」が表示されます
更新 2
Sully の例が最も近いものでしたが、UNION SQL が機能することを願っています。有効な値を押し下げずに実行できればもっとよいでしょう。現状では、適切なレイアウトがありますが、その 16X12 レイアウト内で必要な場所に val が表示されません。とにかく、後世のために、行と列が動的に作成される方法を次に示します (以下のコードに示されているものとは異なり、互いに同一ではありません)。
//prebuild 12 rows in outputDt
int iRows = 12;
while (iRows > 0)
{
DataRow row = outputDt.NewRow();
outputDt.Rows.Add(row);
iRows -= 1;
}
//prebuild 16 cols in outputDt
int iCols = 16;
while (iCols > 0) {
DataColumn col = new DataColumn();
outputDt.Columns.Add(col);
iCols -= 1;
}
最終更新
動作しました。DataGridView に交互の垂直列を設定することは可能ですか? を参照してください。