简单的(?)PIVOT无骨料(simple(?) PIVOT without an aggregat

2019-08-03 15:10发布

支点,男人...我只是失踪了。 也许是因为我没有做一个汇总。 哎呀,也许枢轴是不是这样做的方法。 这感觉就像它应该是简单的,但它难住我了。

比方说,我有这样的:

SELECT col1
FROM tbl1

col1
====
414
589

我怎样才能得到这两个记录回来为:

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

警告的夫妇这个问题的目的

  • 永远不会回去两个以上的记录
  • 我总是会回去整数,但我不知道他们是什么

Answer 1:

您可以实现PIVOT操作:

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

请参阅SQL拨弄演示



Answer 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;


Answer 3:

如果你知道你唯一获得两个,为什么不这样:

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

这只能说明一个第二值​​,如果有两个。



文章来源: simple(?) PIVOT without an aggregate