商业世界1256987每月10 2009-09-23
商业世界1256987每月10 2009-08-18Linux 4 U 456734每月25 2009-12-24
Linux 4 U 456734每月25 2009-11-11
Linux 4 U 456734每月25 2009-10-28
我通过查询得到了这个结果:
SELECT DISTINCT ljm.journelname,ljm. subscription_id,
ljm.frequency,ljm.publisher, ljm.price, ljd.receipt_date
FROM lib_journals_master ljm,
lib_subscriptionhistory
lsh,lib_journal_details ljd
WHERE ljd.journal_id=ljm.id
ORDER BY ljm.publisher
我需要的是每个期刊的最新日期?
我尝试了这个查询:
SELECT DISTINCT ljm.journelname, ljm.subscription_id,
ljm.frequency, ljm.publisher, ljm.price,ljd.receipt_date
FROM lib_journals_master ljm,
lib_subscriptionhistory lsh,
lib_journal_details ljd
WHERE ljd.journal_id=ljm.id
AND ljd.receipt_date = (
SELECT max(ljd.receipt_date)
from lib_journal_details ljd)
但是它给了我整个专栏的最大值。我需要的结果将有两个日期(每个杂志的最大值),但这个查询只给我一个?
答案 0 :(得分:1)
您可以更改WHERE语句以查找每个日记的最后日期:
AND ljd.receipt_date = (
SELECT max(subljd.receipt_date)
from lib_journal_details subljd
where subljd.journelname = ljd.journelname)
确保为子查询中的表提供与主查询中的表不同的别名。
答案 1 :(得分:0)
如果您需要Max from date,则应使用Group By。 应该看起来像这样:
SELECT
ljm.journelname
, ljm.subscription_id
, ljm.frequency
, ljm.publisher
, ljm.price
, **MAX(ljd.receipt_date)**
FROM
lib_journals_master ljm
, lib_subscriptionhistory lsh
, lib_journal_details ljd
WHERE
ljd.journal_id=ljm.id
GROUP BY
ljm.journelname
, ljm.subscription_id
, ljm.frequency
, ljm.publisher
, ljm.price
答案 2 :(得分:0)
这样的事情对你有用。
SELECT ljm.journelname
, ljm.subscription_id
, ljm.frequency
, ljm.publisher
, ljm.price
,md.max_receipt_date
FROM lib_journals_master ljm
, ( SELECT journal_id
, max(receipt_date) as max_receipt_date
FROM lib_journal_details
GROUP BY journal_id) md
WHERE ljm.id = md.journal_id
/
请注意,我已从FROM子句中删除了对查询没有任何贡献的表。如果yopu为了我们的利益简化了您的方案,您可能需要更换它们。
答案 3 :(得分:0)
听起来像群体的顶部。您可以在SQL Server中使用CTE:
;WITH journeldata AS
(
SELECT
ljm.journelname
,ljm.subscription_id
,ljm.frequency
,ljm.publisher
,ljm.price
,ljd.receipt_date
,ROW_NUMBER() OVER (PARTITION BY ljm.journelname ORDER BY ljd.receipt_date DESC) AS RowNumber
FROM
lib_journals_master ljm
,lib_subscriptionhistory lsh
,lib_journal_details ljd
WHERE
ljd.journal_id=ljm.id
AND ljm.subscription_id = ljm.subscription_id
)
SELECT
journelname
,subscription_id
,frequency
,publisher
,price
,receipt_date
FROM journeldata
WHERE RowNumber = 1
答案 4 :(得分:0)
将其分为两个查询,一个将获得期刊名称和最新日期
declare table @table (journalName as varchar,saleDate as datetime)
insert into @table
select journalName,max(saleDate) from JournalTable group by journalName
从表格中选择所需的所有字段,然后加入@table。加入journalName。