我在浏览CSV文件时遇到了问题,现在我正在使用Filehelpers,但我可以尝试任何可以给我答案的方法。
我有这样的CSV文件:
001AD;1234;Window1;;;START;29-11-2016 07:32:00;;
001AD;1234;Window1;;;STOP;29-11-2016 07:45:00;13;
002BS;1222;;Frezowanie;;START;29-11-2016 07:53:00;;
003MR;1243;Window2;;;START;30-11-2016 08:20:00;;
002BS;1222;;Frezowanie;;STOP;30-11-2016 11:23:00;210;
004DG;Oklejanie;;;;START;01-12-2016 06:33:00;;
我想只选择那些具有相同的3个第一个值但没有“STOP”等效的行。所以在这种情况下,它将是第4行和第6行。有没有选择这样做?
答案 0 :(得分:1)
由于您没有明确说明您的用例,我使用的是SQLite解决方案:
首先,您必须import your CSV file
然后运行以下查询:
SQLite(SQL.js)架构设置:
CREATE TABLE t
("a" TEXT(5), "b" TEXT(9), "c" TEXT(7), "d" TEXT(10), "e" INTEGER, "f" TEXT(5), "g" TEXT(19), "h" INTEGER)
;
INSERT INTO t
("a", "b", "c", "d", "e", "f", "g", "h")
VALUES
('001AD', '1234', 'Window1', NULL, NULL, 'START', '29-11-2016 07:32:00', NULL)
;
-- ...
查询1 :
select sta.*
from (
select *
from t
where f = "START"
) sta
LEFT JOIN (
select *
from t
where f = "STOP"
) sto
ON (
sta.a = sto.a
OR (
sta.a IS NULL
AND sto.a IS NULL
)
)
AND (
sta.b = sto.b
OR (
sta.b IS NULL
AND sto.b IS NULL
)
)
AND (
sta.c = sto.c
OR (
sta.c IS NULL
AND sto.c IS NULL
)
)
WHERE
sto.f IS NULL
<强> Results 强>:
| a | b | c | d | e | f | g | h |
|-------|-----------|---------|--------|--------|-------|---------------------|--------|
| 003MR | 1243 | Window2 | (null) | (null) | START | 30-11-2016 08:20:00 | (null) |
| 004DG | Oklejanie | (null) | (null) | (null) | START | 01-12-2016 06:33:00 | (null) |