1

ピボット、男...私はそれが恋しいです。集計をしていないからかもしれません。ひょっとしたら、ピボットはこれを行う方法ではないかもしれません。シンプルであるべきだと感じますが、私は困惑しています。

私がこれを持っているとしましょう:

SELECT col1
FROM tbl1

col1
====
414
589

これら2つのレコードを次のように戻すにはどうすればよいですか:

fauxfield1  fauxfield2
==========  ==========
414         589

この質問の目的のためのいくつかの注意事項

  • 2 つ以上のレコードを取り戻すことはありません
  • 私はいつも整数を返すつもりですが、それがどうなるかはわかりません
4

3 に答える 3

2

2つの値しか持たない場合は、次のようにすることができます

select
    (select top(1) col1 from tbl1 order by col1) fauxfield1,
    (select top(1) col1 from tbl1 order by col1 desc) fauxfield2;

しかし、私が理解していないのは、なぜ集計を避ける必要があるのですか? SQL Server の障害のあるバージョンを見つけましたか? 通常のクエリは次のようになります

select min(col1) fauxfield1, max(col1) fauxfield2
  from tbl1;
于 2012-12-06T19:10:30.343 に答える
1

2つしか取得していないことがわかっている場合は、次のようにしてください。

SELECT 
    MIN(col1) ff1
    , CASE MAX(col1) 
        WHEN MIN(col1) THEN NULL
        ELSE MAX(col1)
      END ff2
FROM 
    tbl1;

これは、2つある場合にのみ2番目の値を示します。

于 2012-12-06T19:11:38.923 に答える
1

You can implement the PIVOT operator:

select [1] as field1,
  [2] as field2
from
(
  select col1, row_number() Over(order by col1) rn
  from yourtable
) src
pivot
(
  max(col1)
  for rn in ([1], [2])
) piv

See SQL Fiddle with Demo

于 2012-12-06T19:13:50.367 に答える