【发布时间】:2016-12-02 23:26:00
【问题描述】:
表T
+----+------------+----------+----------+----------+----+----+----+
| ID | Sdate | Pr | Oxy | Met | D1 | D2 | D3 |
+----+------------+----------+----------+----------+----+----+----+
| 1 | 7/14/2016 | Negative | Positive | Negative | N | P | N |
| 1 | 8/10/2016 | Positive | Negative | Negative | P | N | N |
| 1 | 9/23/2016 | Positive | Positive | Negative | P | P | N |
| 2 | 6/17/2015 | Negative | Negative | Negative | N | N | N |
| 2 | 8/1/2015 | Negative | Positive | Positive | N | P | P |
| 2 | 11/19/2015 | Positive | Negative | Negative | P | N | N |
| 3 | 2/28/2016 | Negative | Positive | Positive | N | P | P |
| 3 | 4/3/2016 | Positive | Positive | Negative | P | P | N |
+----+------------+----------+----------+----------+----+----+----+
我需要默认对应于每个组中的最小日期的行以显示 D1、D2、D3 AS P 的所有值并将组中的剩余值设置为其他值
期望的输出:
+----+------------+----------+----------+----------+----+----+----+
| ID | Sdate | Pr | Oxy | Met | D1 | D2 | D3 |
+----+------------+----------+----------+----------+----+----+----+
| 1 | 7/14/2016 | Negative | Positive | Negative | P | P | P |
| 1 | 8/10/2016 | Positive | Negative | Negative | P | N | N |
| 1 | 9/23/2016 | Positive | Positive | Negative | P | P | N |
| 2 | 6/17/2015 | Negative | Negative | Negative | P | P | P |
| 2 | 8/1/2015 | Negative | Positive | Positive | N | P | P |
| 2 | 11/19/2015 | Positive | Negative | Negative | P | N | N |
| 3 | 2/28/2016 | Negative | Positive | Positive | P | P | P |
| 3 | 4/3/2016 | Positive | Positive | Negative | P | P | N |
+----+------------+----------+----------+----------+----+----+----+
代码尝试:
SELECT
ID
,SDate
,CASE WHEN T.Pr = 'Positive' THEN 'P' ELSE 'N' END AS D1
,CASE WHEN T.Oxy = 'Positive' THEN 'P' ELSE 'N' END AS D2
,CASE WHEN T.Met = 'Positive' THEN 'P' ELSE 'N' END AS D3
FROM T
不知道如何使用GROUP BY 作为ID,然后像嵌套CASE 一样
CASE WHEN MIN(DATE) THEN 'P' ELSE CASE WHEN T.Pr...(and so on)
任何替代方法也将不胜感激。谢谢。
【问题讨论】:
-
什么是公关?什么是氧?什么是大都会?
-
只是结果连接表中的不同字段,我不需要按原样显示。只有这个来自我创建的示例表的简化结果。
-
您在代码尝试中使用了这些列,那么您是说那些没有必要?如果它们不是必需的,你能解释一下为什么每一行+每一列都有它的价值吗?
-
不认为包含它们会特别有用,但已编辑。谢谢。
标签: sql-server sql-server-2012 group-by case