0
我读了很多线程,但没有得到正确的解决方案,我的问题。这相当于该ThreadSQL - 左连接和WHERE语句显示第一行
我有一个查询,它收集数据并写入每个shell脚本到一个CSV文件:
SELECT
'"Dose History ID"' = d.dhs_id,
'"TxFieldPoint ID"' = tp.tfp_id,
'"TxFieldPointHistory ID"' = tph.tph_id,
...
FROM txfield t
LEFT JOIN txfielpoint tp ON t.fld_id = tp.fld_id
LEFT JOIN txfieldpoint_hst tph ON fh.fhs_id = tph.fhs_id
...
WHERE d.dhs_id NOT IN ('1000', '10000')
AND ...
ORDER BY d.datetime,...;
这是基于有大量的表格和机器值的非常大的数据库。我选择了我感兴趣的列,并通过内置的表ID将它们链接起来。现在我必须减少结果,我得到许多具有相同值的行,并且只更改ID。我只需要一个(第一)行的“tph.tph_id”与机制像
WHERE "Rownumber" is 1
或类似的东西。到目前为止,我无法实现适当的子查询或使用SQL函数ROW_NUMBER()
。您的帮助将非常感激。结果看起来像这样,根据最后一个ID,我只需要一行这个数字(所有的ID都不是严格连续的)。
A01";261511;2843119;714255;3634457;
A01";261511;2843113;714256;3634457;
A01";261511;2843113;714257;3634457;
A02";261512;2843120;714258;3634464;
A02";261512;2843114;714259;3634464;
....
尝试'集团BY'而用于聚集[除tph.tph_id所有字段]'GROUP BY'应该给你你想要的结果 –
也许我错过了一些东西,但是在你选择的开始处有一个致命的错误。你不能给一个字符串赋值(即'''剂量历史ID''= d.dhs_id'是非法的)。其次,你正在使用一个别名'd'(就像'WHERE d.dhs_id NOT IN('1000','10000')'),我没有看到这个别名被定义在哪里。 – FDavidov
@FDavidov d(和其他)的别名在后面的SELECT部分中。我试过 – Nurito