枢轴,伙计……我只是想念它。也许是因为我没有做聚合。哎呀,也许枢轴不是做到这一点的方法。感觉它应该很简单,但它让我难住了。
假设我有这个:
SELECT col1
FROM tbl1
col1
====
414
589
我怎样才能得到这两条记录:
fauxfield1 fauxfield2
========== ==========
414 589
出于这个问题的目的,有几个注意事项
- 我永远不会拿回超过两条记录
- 我总是要取回整数,但我不知道它们会是什么。
枢轴,伙计……我只是想念它。也许是因为我没有做聚合。哎呀,也许枢轴不是做到这一点的方法。感觉它应该很简单,但它让我难住了。
假设我有这个:
SELECT col1
FROM tbl1
col1
====
414
589
我怎样才能得到这两条记录:
fauxfield1 fauxfield2
========== ==========
414 589
出于这个问题的目的,有几个注意事项
如果你只有两个值,你可以这样做
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;
如果你知道你只得到两个,为什么不这样:
SELECT
MIN(col1) ff1
, CASE MAX(col1)
WHEN MIN(col1) THEN NULL
ELSE MAX(col1)
END ff2
FROM
tbl1;
如果有两个值,这只会显示第二个值。
您可以实现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