请如何从这些数据中获得以下结果?
(我正在尝试将条件与条件结合起来但仍有一些不需要的行。)
输入仅在一个表中:
ID IN OUT
-----------------
1 6:00 null
2 7:11 null
2 null 16:30
3 null 19:00
输出(视图)应该组合相同的ID,因此结果将如下所示:
ID IN OUT
------------------
1 6:00 null
2 7:11 16:30
3 null 19:00
答案 0 :(得分:0)
您可以尝试使用CTE实现此目的:
CREATE TABLE #data
(
Id int not null,
inTime varchar(10) null,
outTime varchar(10) null
)
INSERT INTO #data VALUES
(1, '6:00', null),
(2 , '7:11', null),
(2 , null, '16:30'),
(3 , null, '19:00')
WITH combinedTable AS (
SELECT
Id,
MAX(inTime) AS A,
MAX(outTime) AS B
FROM #data
GROUP BY Id
HAVING MAX(2) = MIN(2)
AND MAX(3) = MIN(3)
)
SELECT *
FROM combinedTable
UNION ALL
SELECT *
FROM #data
WHERE ID NOT IN (SELECT ID FROM combinedTable)
答案 1 :(得分:0)
以下内容可以达到目的: 1.有一个带ID和IN的表,其中IN不等于null:
(select ID, IN from table where In ne NULL()) as tableA
O / P将是:
ID IN
1 6:00
2 7:11
2.有一个带ID和OUT的表,其中OUT不等于null:
(select ID, OUT from table where OUT ne NULL()) as tableB
O / P将是:
ID OUT
2 16:30
3 19:00
3.Outer加入两个表:
select tableA.ID,tableA.IN, tableB.OUT
from table as tableA
outer full join
select ID,OUT from table as tableB
On tableA.ID=tableB.ID and tableA.IN ne Null() and tableB.OUT ne NULL()
输出将是所需的输出:
ID IN OUT
1 6:00 null
2 7:11 16:30
3 null 19:00