此第一条select语句将基于日期显示数据。第二条选择语句也将如此。两个日期都在一列中,我想从一个datagridview中的两个日期中减去“每日计量表”的金额。
Select Machine.ID,Clientinfo.Clientname,Machine.MachineLocation, Machine.MachineType,DailyMeter,DailyCashAmt,DailyCardAmt,DailyCashAmt+DAilyCardAmt as TOTALAMT,Dailydate
from Machine
inner join Clientinfo on Clientinfo.ID = Machine.MachineID
inner join DailyInput on Dailyinput.DailyId = Machine.ID
Where Clientinfo.ClientRoutenum = '1' and dailydate = '10-11-18'
(select DailyMeter from DailyInput where Dailydate = '10-10-18')
这些查询的结果是两个结果,每个选择之一。我希望较低的结果成为第一个结果的一部分,因此我可以从10-10-18的日计费量中减去10-11-18的日计费量。我把它们放在这里只是为了清楚。前1名无济于事。无法将选择项放在第一位作为子项,因为存在多行。感谢您的帮助。
答案 0 :(得分:0)
Select Machine.ID, Clientinfo.Clientname, Machine.MachineLocation, Machine.MachineType, DailyMeter, DailyCashAmt,
DailyCardAmt, DailyCashAmt+DAilyCardAmt as TOTALAMT, Dailydate, di2.DailyMeter as LastDayMeter
from Machine inner join Clientinfo on Clientinfo.ID = Machine.MachineID
inner join DailyInput on Dailyinput.DailyId = Machine.ID
left outer join DailyInput as di2 on di2.DailyId = Machine.ID AND di2.Dailydate = '10-10-18'
Where Clientinfo.ClientRoutenum = '1'
and dailydate = '10-11-18'
答案 1 :(得分:0)
您可以使用条件汇总来调整日期:
Select m.ID, ci.Clientname, m.MachineLocation, m.MachineType,
max(case when di.dailydate = '10-11-18' then di.DailyMeter end) as dailymeter_date2,
max(case when di.dailydate = '10-11-18' then di.DailyCashAmt end) as DailyCashAmt_date2,
max(case when di.dailydate = '10-11-18' then di.DailyCardAmt end) as DailyCardAmt_date2,
max(case when di.dailydate = '10-11-18' then di.DailyCashAmt + di.DAilyCardAmt end) as totalamt_date2,
max(case when di.dailydate = '10-10-18' then di.DailyMeter end) as dailymeter_date1,
max(case when di.dailydate = '10-10-18' then di.DailyCashAmt end) as DailyCashAmt_date1,
max(case when di.dailydate = '10-10-18' then di.DailyCardAmt end) as DailyCardAmt_date1,
max(case when di.dailydate = '10-10-18' then di.DailyCashAmt + di.DAilyCardAmt end) as totalamt_date1,
from Machine m inner join
Clientinfo ci
on ci.ID = m.MachineID inner join
DailyInput di
on di.DailyId = m.ID
where ci.ClientRoutenum = '1' and
ci.dailydate in ('10-11-18', '10-10-18')
group by m.ID, ci.Clientname, m.MachineLocation, m.MachineType;
如果daildate
被存储为日期,则比较值应为YYYY-MM-DD或YYYYMMDD格式。