[英]Select multiple rows in single result using SQL Server 2008
我有下表。
code type value
===================
100 R 3300
100 B 7900
101 R 6800
100 D 2100
100 C 2300
101 C 1200
当我为code = 100选择时,我希望select语句返回低于结果的值。
code Rvalue Bvalue Dvalue Cvalue
==================================
100 3300 7900 2100 2300
我使用内联查询成功实现了这一点。 但我想知道是否有更好的方法可以做到这一点。
提前致谢。
不知道这是否是最好的方法,但是它可以工作。 使用max()和CASE从一个创建多个列。 Max将始终选择实数值而不是NULL。 您可以根据需要替换0或其他默认值。
SELECT code
,max(CASE
WHEN type = 'r'
THEN value
ELSE NULL
END) RValue
,max(CASE
WHEN type = 'b'
THEN value
ELSE NULL
END) BValue
,max(CASE
WHEN type = 'd'
THEN value
ELSE NULL
END) DValue
,max(CASE
WHEN type = 'c'
THEN value
ELSE NULL
END) CValue
FROM mytable
GROUP BY code
您可以使用PIVOT运算符。 我自己从未真正使用过它,但是我认为它会做您想要做的事情。 并不是很确定这会好多少。
https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx
使用PIVOT:
SELECT *
FROM
(
<table that gives you current results>
) src
PIVOT
(
MAX(value) --must use an aggregrate function here
FOR type IN('r', 'b', 'd', 'c')
) pvt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.