我想在一个组中选择列的数据,并将该数据放在该组的每一行的自己的列中。
具体来说,如果我有一个看起来像这样的表:
SELECT * FROM Jobtable
JOBNum | ReqDateTime | RowNum
-------+----------+------
M210 | 2015-01-08 17:01:56.000 | 1
M214 | 2015-01-12 17:46:09.000 | 1
M214 | 2015-01-16 20:19:43.000 | 2
M219 | 2015-01-27 15:05:16.000 | 1
M219 | 2015-01-28 02:01:13.000 | 2
我想表明这一点:
JOBNum | ReqDateTime | FirstDateInEachGroup | Row |
-------+-------------------------+-------------------------+-----+
M210 | 2015-01-08 17:01:56.000 | 2015-01-08 17:01:56.000 | 1 |
M214 | 2015-01-12 17:46:09.000 | 2015-01-12 17:46:09.000 | 1 |
M214 | 2015-01-16 20:19:43.000 | 2015-01-12 17:46:09.000 | 2 |
M219 | 2015-01-27 15:05:16.000 | 2015-01-27 15:05:16.000 | 1 |
M219 | 2015-01-28 02:01:13.000 | 2015-01-27 15:05:16.000 | 2 |
我想创建另一个专栏" FirstDateInEachGroup"在每一个JobNum组中的ReqDateTime由Row = 1组成。在上面的例子中,您可以看到有两个JobNum相同的地方,它们有不同的" Row& #34;和FirstDateInEachGroup将在每一行中包含相同的JobNum数据。
如何在不使用光标或功能的情况下执行此操作?
谢谢!
答案 0 :(得分:1)
我想你想要这样的东西:
SELECT
JobNum, ReqDateTime, RowNum,
(select min(ReqDateTime) from JobTable jt2 where jt2.JobNum = jt1.JobNum group by JobNum) as FirstDateInEachGroup
FROM Jobtable jt1
答案 1 :(得分:1)
只需使用min()
窗口功能:
SELECT JobNum, ReqDateTime,
MIN(ReqDateTime) OVER (PARTITION BY JobNum) as FirstDateInEachGroup,
RowNum
FROM Jobtable;