【问题标题】:sql query with group by and countsql查询与group by和count
【发布时间】:2014-12-10 18:56:34
【问题描述】:

我有这个 ms 访问查询:

SELECT weber, t1.artnr, t1.varnr, t1.lfdnr_kal, fert.invnr, fert.min, fert.[lst/h] FROM (
SELECT stammdat.weber, lackzahlen.artnr, lackzahlen.varnr, first(stammdat.[lfdnr-kal]) AS lfdnr_kal
FROM lackzahlen LEFT JOIN stammdat ON (lackzahlen.artnr=cstr(IIf(stammdat.artnr Is Null,'',cstr(stammdat.artnr)))) AND (lackzahlen.varnr=cstr(IIf(stammdat.varnr Is Null,'',cstr(stammdat.varnr)))) 
GROUP BY lackzahlen.artnr, lackzahlen.varnr, io_stkzahl, weber) AS t1
LEFT JOIN fert ON (t1.lfdnr_kal=fert.[lfdnr-kal]) AND (t1.artnr=cstr(iif(fert.artnr Is Null,'',cstr(fert.artnr)))) WHERE fert.invnr IN ('338902', 'R20000')

现在,我想过滤图像上的记录:

如你所见,我想要记录,其中 pro weber、artnr、varnr、lfdnr_kal 和 invnr 不止一行,具有相同的 min 和 lst/h 值。

我想,我应该使用 cound(也许有 count)和 group by。但是怎么做呢?

在示例中,我没有标记所有行。

【问题讨论】:

    标签: sql ms-access group-by


    【解决方案1】:

    添加group byhaving 以获取重复行

      GROUP BY weber, t1.artnr, t1.varnr, t1.lfdnr_kal, fert.invnr, fert.min, fert.[lst/h]
      having count(*) >1
    

    【讨论】:

      【解决方案2】:

      试试下面的 SQL:因为你没有提到 sum 或 AVG 值,我猜不同的记录会解决你的问题。

      select weber, a.artnr,a.varnr, a.lfdnr_kal, a.invnr, a.min, a.lst_h
      (
      SELECT weber, t1.artnr, t1.varnr, t1.lfdnr_kal, fert.invnr, fert.min, fert.[lst/h] as lst_h FROM (
      SELECT stammdat.weber, lackzahlen.artnr, lackzahlen.varnr, first(stammdat.[lfdnr-kal]) AS lfdnr_kal
      FROM lackzahlen LEFT JOIN stammdat ON (lackzahlen.artnr=cstr(IIf(stammdat.artnr Is Null,'',cstr(stammdat.artnr)))) AND (lackzahlen.varnr=cstr(IIf(stammdat.varnr Is Null,'',cstr(stammdat.varnr)))) 
      GROUP BY lackzahlen.artnr, lackzahlen.varnr, io_stkzahl, weber) AS t1
      LEFT JOIN fert ON (t1.lfdnr_kal=fert.[lfdnr-kal]) AND (t1.artnr=cstr(iif(fert.artnr Is Null,'',cstr(fert.artnr)))) WHERE fert.invnr IN ('338902', 'R20000')
      ) a group by weber, a.artnr,a.varnr, a.lfdnr_kal, a.invnr, a.min, a.lst_h 
      Having count(*) > 1

      希望这会有所帮助:)

      【讨论】:

      • 问题不是要删除重复的行,而是要准确获取那些有重复的行。
      猜你喜欢
      • 2021-12-19
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多