pDay pName pPr _in _out
2008-08-13 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-12 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-12 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-10 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-10 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-09 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-09 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-08 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-08 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-13 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-12 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-12 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-10 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-10 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-09 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-09 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-08 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-08 00:00:00.000 一分厂 MOD5 NULL 出 这样可以吗
2008-08-13 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-12 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-12 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-10 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-10 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-09 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-09 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-08 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-08 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-13 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-12 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-12 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-10 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-10 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-09 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-09 00:00:00.000 一分厂 MOD5 NULL 出
2008-08-08 00:00:00.000 一分厂 MOD5 进 NULL
2008-08-08 00:00:00.000 一分厂 MOD5 NULL 出 这样可以吗
FROM TABLE
GROUP BY pDay, pName,pProject
FROM TABLE
GROUP BY pDay, pName,pProject
合并同列的条件相同的项比如第二行和第三行。根据条件,他们的最后两列可以进行合并
结果如下2008-08-12 00:00:00.000 一分厂 MOD5 进 出求sql
GO
CREATE TABLE [TB]([PDAY] VARCHAR(10),[PNAME] VARCHAR(10),[PPR] VARCHAR(10),[_IN] VARCHAR(10),[_OUT] VARCHAR(10))
INSERT [TB] SELECT '2008-08-13','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-12','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-12','一分厂','MOD5',NULL,'出'
UNION ALL SELECT '2008-08-10','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-10','一分厂','MOD5',NULL,'出'
UNION ALL SELECT '2008-08-09','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-09','一分厂','MOD5',NULL,'出'
UNION ALL SELECT '2008-08-08','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-08','一分厂','MOD5',NULL,'出'
UNION ALL SELECT '2008-08-13','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-12','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-12','一分厂','MOD5',NULL,'出'
UNION ALL SELECT '2008-08-10','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-10','一分厂','MOD5',NULL,'出'
UNION ALL SELECT '2008-08-09','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-09','一分厂','MOD5',NULL,'出'
UNION ALL SELECT '2008-08-08','一分厂','MOD5','进',NULL
UNION ALL SELECT '2008-08-08','一分厂','MOD5',NULL,'出'
GOSELECT PDAY, PNAME,PPR,MAX(ISNULL([_IN],'')) [_IN] , MAX(ISNULL([_OUT],'')) [_OUT]
FROM TB
GROUP BY PDAY, PNAME,PPR
/*
PDAY PNAME PPR _IN _OUT
---------- ---------- ---------- ---------- ----------
2008-08-08 一分厂 MOD5 进 出
2008-08-09 一分厂 MOD5 进 出
2008-08-10 一分厂 MOD5 进 出
2008-08-12 一分厂 MOD5 进 出
2008-08-13 一分厂 MOD5 进 (5 行受影响)
*/
SELECT PDAY, PNAME,PPR,MAX(ISNULL([_IN],'')) [_IN] , MAX(ISNULL([_OUT],'')) [_OUT]
FROM TB
GROUP BY PDAY, PNAME,PPR