sql:我有一个这样的表:
+------+------+
|ID |Result|
+------+------+
|1 |A |
+------+------+
|2 |A |
+------+------+
|3 |A |
+------+------+
|1 |B |
+------+------+
|2 |B |
+------+------+
输出应该是这样的:
输出:
+------+-------+-------+
|ID |Result1|Result2|
+------+-------+-------+
|1 |A |B |
+------+-------+-------+
|2 |A |B |
+------+-------+-------+
|3 |A | |
+------+-------+-------+
我该怎么做?
答案 0 :(得分:0)
SELECT
Id,
MAX((CASE result WHEN 'A' THEN 'A' ELSE NULL END)) result1,
MAX((CASE result WHEN 'B' THEN 'B' ELSE NULL END)) result2,
FROM
table1
GROUP BY Id
结果
+------+-------+-------+
|Id |Result1|Result2|
+------+-------+-------+
|1 |A |B |
|2 |A |B |
|3 |A |NULL |
+------+-------+-------+
在SQL小提琴上运行实时演示:(http://sqlfiddle.com/#!9/e1081/2)
答案 1 :(得分:0)
有几种方法可以做到这一点。 没有一个是直接的。 从理论上讲,一个简单的方法是创建2个临时表,在这里你可以分离数据,所有“A”结果都在一个表中,“B”在另一个表中。
然后使用简单查询获得结果。使用JOIN。
如果允许您在流程上使用某些scrpting,那么它就更简单了,否则您需要在查询中使用更复杂的逻辑。并且为了查询alwasy的工作,你需要有一些规则,例如,一个表总是包含比B表更多的ID。
如果您发布真实示例,则更容易获得更好的答案。
答案 2 :(得分:0)
出于这个原因:
ID名称文件名
1001 swapan 4566.jpg
1002 swapan 678.jpg
1003 karim 7688.jpg
1004 tarek 7889.jpg
1005 karim fdhak.jpg
输出:
ID名称文件名
1001 swapan 4566.jpg 678.jpg
1003 karim 7688.jpg fdhak.jpg
1004 tarek 7889.jpg ...
...... ...... ......