首页 > 解决方案 > 如何在第一个查询的基础上使用两个查询来查找结果

问题描述

我有两个表,Repair_master并且New_Equipment_info通过此处显示的查询,我能够检索到 maint 的所有最新日期记录。通过对 RID 进行分组并填充数据网格。

SELECT 
  t1.RID
 ,t1.RDATE
 ,t1.EQ_ID
 ,new_equipment_info.Equipment_Name
 ,new_equipment_info.Complete_specification
 ,t1.DEPT
 ,t1.REPAIR_MAINT
 ,t1.ACTION_TAKEN
 ,t1.SAPRES
 ,t1.ATT_BY
 ,t1.[STATUS]
 ,t1.RNO
FROM
  Equipment.dbo.REPAIR_MASTER t1 
INNER JOIN
  Equipment.dbo.new_EQUIPMENT_INFO 
    ON t1.EQ_ID = New_Equipment_info.Equipment_Id 
INNER JOIN 
  (
    SELECT
      Eq_ID
     ,max(RDate) as MaxDate 
    FROM 
      Equipment.dbo.REPAIR_MASTER 
    group by 
      Eq_ID
  ) tm 
    ON t1.EQ_ID = tm.EQ_ID 
        and t1.RDATE = tm.MaxDate
WHERE 
  t1.Repair_Maint = 'maint.' 
ORDER BY 
  t1.RDATE DESC

但我想知道从查询和当前日期过滤的最后一个日期起的天数。

像这样

DATEDIFF(day,  MaxDate, GETDATE()) AS Difference)

好心提醒

此外,我想在文本框中输入天数并单击按钮并仅显示差异大于输入值的那些记录。

private void btnOverDue_Click(object sender, EventArgs e)
{
        using (SqlConnection con = new SqlConnection(connString))
        {
            string p = "SELECT t1.[RID],t1.[RDATE],t1.[EQ_ID],new_equipment_info.Equipment_Name,new_equipment_info.Complete_specification," +
              "t1.[DEPT],t1.[REPAIR_MAINT],t1.[ACTION_TAKEN],t1.[SAPRES],t1.[ATT_BY],t1.[STATUS],t1.[RNO]FROM([Equipment].[dbo].[REPAIR_MASTER] t1 inner join[Equipment].[dbo].new_EQUIPMENT_INFO ON " +
              "t1.EQ_ID = New_Equipment_info.Equipment_Id inner join (select Eq_ID, max(RDate) as MaxDate FROM [Equipment].[dbo].[REPAIR_MASTER] group by Eq_ID) tm on t1.EQ_ID=tm.EQ_ID and t1.RDATE =tm.MaxDate)" +
              "where t1.Repair_Maint='maint.' ORDER BY t1.RDATE desc";  
            SqlCommand cmd = new SqlCommand(p, con);
            SqlDataAdapter dataadapter = new SqlDataAdapter(p, con);
            DataSet ds = new DataSet();
            dataadapter.Fill(ds, "Repair_master");
            EquipGrid.DataSource = ds;
            EquipGrid.DataMember = "Repair_master";
        }
    }

标签: c#sql-server

解决方案


推荐阅读