SQLite 具有 2 个唯一列
SQLite Distinct With 2 Unique Column
我正在使用 SQLite。我想让 2 列中的每个数据行都是唯一的。
本例数据在order_transaction
table:
date_transaction
customer
2022-05-11
Dio
2022-05-11
Dio
2022-05-11
Jotaro
当我使用 distinct
查询时:
SELECT DISTINCT date_transaction, customer FROM order_transaction;
输出为:
date_transaction
customer
2022-05-11
Dio
2022-05-11
Jotaro
好的,我得到了 customer
独特的行,但是我怎样才能得到这样的 date_transaction
独特的行?
date_transaction
customer
2022-05-11
Dio
Jotaro
什么查询可以获得该输出?
我是 SQLite 新手。对不起:)
使用 CASE
表达式和 ROW_NUMBER()
window 函数:
SELECT CASE WHEN ROW_NUMBER() OVER (PARTITION BY t.date_transaction ORDER BY t.customer) = 1 THEN t.date_transaction END date_transaction,
t.customer
FROM order_transaction t
GROUP BY t.date_transaction, t.customer
ORDER BY t.date_transaction, ROW_NUMBER() OVER (PARTITION BY t.date_transaction ORDER BY t.customer);
参见demo。
我正在使用 SQLite。我想让 2 列中的每个数据行都是唯一的。
本例数据在order_transaction
table:
date_transaction | customer |
---|---|
2022-05-11 | Dio |
2022-05-11 | Dio |
2022-05-11 | Jotaro |
当我使用 distinct
查询时:
SELECT DISTINCT date_transaction, customer FROM order_transaction;
输出为:
date_transaction | customer |
---|---|
2022-05-11 | Dio |
2022-05-11 | Jotaro |
好的,我得到了 customer
独特的行,但是我怎样才能得到这样的 date_transaction
独特的行?
date_transaction | customer |
---|---|
2022-05-11 | Dio |
Jotaro |
什么查询可以获得该输出?
我是 SQLite 新手。对不起:)
使用 CASE
表达式和 ROW_NUMBER()
window 函数:
SELECT CASE WHEN ROW_NUMBER() OVER (PARTITION BY t.date_transaction ORDER BY t.customer) = 1 THEN t.date_transaction END date_transaction,
t.customer
FROM order_transaction t
GROUP BY t.date_transaction, t.customer
ORDER BY t.date_transaction, ROW_NUMBER() OVER (PARTITION BY t.date_transaction ORDER BY t.customer);
参见demo。