我想我有一個簡單的要求,但似乎沒有找到答案......而且谷歌目前不是我的朋友...... :)
我有一個包含專案的(整數)串列
我在資料庫中有 2 個表:
Tabel Count:
CountDate,
item
我對專案計數的最新日期感興趣。
Tabel pick:
PickDate ,
Item
選擇專案的日期。我對上次計算專案后的選秀數量感興趣,所以;
從表計數的最新日期之后選擇的次數(選擇)。
我可以做:第1步:
“Select ITEM, max(countdate) as countdate from Count where Item = IN (1234,234,345)”
第2步:對于我需要做的每個專案編號:
“SELECT COUNT (item) as amount from PICK where item = itemnumber AND Pickdate > ResultCountDateStep1”
我似乎找不到 1 個總查詢(針對所有 itemnumbers)來獲得資料表:
Item LastCountDate AmountofPicks
uj5u.com熱心網友回復:
這是一個使用 CTE 的解決方案,它適用于不同 dbms 的許多版本,例如 MySQL、Sql Server 和 Postgres。如果您有不同的 rdbms 或更舊版本,您可能需要稍作修改。您可以將此 CTE 轉換為子查詢。基本上,您可以使用 CTE 或子查詢來獲取最大日期,然后加入專案。
create table count_table (
item integer,
countdate date
);
insert into count_table values
(1234, '2022-01-01'),
(1234, '2022-04-15'),
(234, '2022-05-10'),
(234, '2022-08-10'),
(234, '2022-09-10'),
(345, '2022-10-15');
create table pick_table (
item integer,
pickdate date
);
insert into pick_table values
(1234, '2022-03-15'),
(1234, '2022-03-16'),
(1234, '2022-05-19'),
(1234, '2022-07-15'),
(234, '2022-03-15'),
(234, '2022-10-15'),
(345, '2022-10-14');
with max_date as (
select item, max(countdate) as max_dt
from count_table
group by item
)
select p.item, d.max_dt as last_count_date, count(p.item) as amount_of_picks
from pick_table p
join max_date d
on p.item = d.item
where p.pickdate > d.max_dt
--and p.item in (1234, 234, 345)
group by p.item, d.max_dt;
| 物品 | last_count_date | amount_of_picks |
|---|---|---|
| 1234 | 2022-04-15 | 2 |
| 234 | 2022-09-10 | 1 |
在 DB Fiddle 上查看
更新
或者,如果您想顯示所有專案,即使是計數為 0 的專案(即,在最后一個計數日期之后選擇日期為 0 的專案),那么您可以使用條件聚合:
with max_date as (
select item, max(countdate) as max_dt
from count_table
group by item
)
select p.item, d.max_dt as last_count_date,
sum(case when p.pickdate > d.max_dt then 1 else 0 end) as amount_of_picks
from pick_table p
left join max_date d
on p.item = d.item
--where p.item in (1234, 234, 345)
group by p.item, d.max_dt;
| 物品 | last_count_date | amount_of_picks |
|---|---|---|
| 1234 | 2022-04-15 | 2 |
| 234 | 2022-09-10 | 1 |
| 345 | 2022-10-15 | 0 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/521489.html
標籤:sqlsql服务器
