SQL 根据另一列将一列转换为两列
SQL Convert one column into two based on another column
具有以下数据集:
Extender_Record_ID: 1, 1, 2, 2, 3, 3, 4, 4, 5, 5
Field_ID: 100, 101, 100, 101, 100, 101, 100, 101, 100, 101
Date: 1/1/2018, 1/2/2018, 1/14/2018, 1/15/2018, 2/1/2018, 2/3/2018,
2/15/2018, 2/17/2018, 3/2/2018, 3/5/2018
我正在尝试获取以下输出:
Start Date: 1/1/2018, 1/14/2018, 2/1/2018, 2/15/2018, 3/2/2018
End Date: 1/2/2018, 1/15/2018, 2/3/2018, 2/17/2018, 3/5/2018
我正在尝试根据 ID 列中的值将日期列拆分为两个单独的日期列。我想将其插入到更大的查询中。
抱歉,我是新手。非常感谢任何帮助!
很简单,一个永远是 min
,另一个永远是 max
,你可以这样做:
SELECT MIN(DATE) AS Date1
, MAX(DATE) AS Date2
FROM ...
GROUP BY ID
或者更复杂的枢轴,但我们可能需要知道 SQL 的风格
select extendedrecordid, field_id, max(case when field_id = 1 then date else null end )date1,
max(case when field_id = 2 then date else null end )date2
from yourtable group by extendedrecordid, field_id
根据您的评论 I got the min and max query to produce what i needed for the minor example.
,您可能实际需要的是这样的:
SELECT
CASE WHEN Id = 1 THEN [DateField] END AS Date1,
CASE WHEN Id = 2 THEN [DateField] END AS Date2
FROM [MyTable]
具有以下数据集:
Extender_Record_ID: 1, 1, 2, 2, 3, 3, 4, 4, 5, 5
Field_ID: 100, 101, 100, 101, 100, 101, 100, 101, 100, 101
Date: 1/1/2018, 1/2/2018, 1/14/2018, 1/15/2018, 2/1/2018, 2/3/2018,
2/15/2018, 2/17/2018, 3/2/2018, 3/5/2018
我正在尝试获取以下输出:
Start Date: 1/1/2018, 1/14/2018, 2/1/2018, 2/15/2018, 3/2/2018
End Date: 1/2/2018, 1/15/2018, 2/3/2018, 2/17/2018, 3/5/2018
我正在尝试根据 ID 列中的值将日期列拆分为两个单独的日期列。我想将其插入到更大的查询中。
抱歉,我是新手。非常感谢任何帮助!
很简单,一个永远是 min
,另一个永远是 max
,你可以这样做:
SELECT MIN(DATE) AS Date1
, MAX(DATE) AS Date2
FROM ...
GROUP BY ID
或者更复杂的枢轴,但我们可能需要知道 SQL 的风格
select extendedrecordid, field_id, max(case when field_id = 1 then date else null end )date1,
max(case when field_id = 2 then date else null end )date2
from yourtable group by extendedrecordid, field_id
根据您的评论 I got the min and max query to produce what i needed for the minor example.
,您可能实际需要的是这样的:
SELECT
CASE WHEN Id = 1 THEN [DateField] END AS Date1,
CASE WHEN Id = 2 THEN [DateField] END AS Date2
FROM [MyTable]