Q
Problem solve Get help with specific problems with your technologies, process and projects.

# Comparing current and previous row values

## My SupplyCosts table contains a list of supplies and the cost associated with that supply for every month. I want to select only the months where the cost has changed and the previous cost. SELECT DISTINCT doesn't work because I need the month field and it returns every record.

My SupplyCosts table contains a list of supplies and the cost associated with that supply for every month:

```SupplyCosts:
mth   item    cost
10-04 bandaid .20
11-04 bandaid .25
12-04 bandaid .30
01-05 bandaid .30```

Some months the cost remains the same and the only change is the month field. Other months, the cost changes. I want to select only the months where the cost has changed and the previous cost. From the example data above, I only want the records for the 11-04 and 12-04 months. SELECT DISTINCT doesn't work because I need the month field and it returns every record. Thanks so much.

The trick with this type of problem, where you need to compare a value on one row with a value on another row, is to use a self-join. This particular scenario is complicated by the fact that you need a pretty hairy join clause, to match the current month with the previous month.

To see why, let's ask ourselves how we should compare 12-04 and 01-05. We can not simply say:

`where t1.mth = t2.mth - 1`

The reason we can't is obvious: 12-04 and 01-05 aren't numbers. They aren't dates, either. They're strings.

However, all is not lost. We can convert strings to dates easily enough, although the actual mechanism is different in just about every database system. Here's the solution using MySQL syntax:

```select curr.item
, curr.mth
, curr.cost as current_cost
, prev.cost as previous_cost
from SupplyCosts as prev
inner
join SupplyCosts as curr
on prev.item = curr.item
cast(
concat('20',substr(prev.mth,4,2)
,'-',substr(prev.mth,1,2)
,'-01') as date)
, interval 1 month)
= cast(
concat('20',substr(curr.mth,4,2)
,'-',substr(curr.mth,1,2)
,'-01') as date)
where prev.cost
<> curr.cost
order
by curr.item
, curr.mth ```

The expressions involving DATE_ADD and CAST will change from one database system to another. Basically you convert the strings to dates (using the first of the month), and then use date arithmetic (in this case the DATE_ADD function) to add 1 month.

This was last published in August 2005

## Content

Find more PRO+ content and other member only offers, here.

#### Have a question for an expert?

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

#### Start the conversation

Send me notifications when other members comment.

## SearchDataManagement

• ### Potent NoSQL architecture engaged for building new applications

Behind hyperbolic terms like 'digital transformation' are innovative systems of engagement. DataStax CEO Billy Bosworth joins ...

• ### Finance data governance program gets new start, broader focus

Businesses constantly need to evolve their programs for governing data. Nationwide's finance data governance team shares how it ...

• ### Pepperdata calls on Dr. Elephant for big data application profiling

Application profiling software from Pepperdata is built on LinkedIn's Dr. Elephant open source entry. A primary goal is to get ...

• ### Deloitte report reveals the power of unstructured data analytics

The analysis of unstructured data and other so-called dark data types can deliver significant business value, according to a new ...

• ### Ease of use is top priority in selecting self-service analytics tools

A lot of factors go into a strong, modern BI tool, but users say that ease of use trumps all other considerations when picking ...

• ### Three predictive modeling flaws that cripple data science projects

Data science can be incredibly valuable if done right, but just as damaging if done wrong. Here, a data science expert discusses ...

## SearchSAP

SAP Vora has been updated to include features that make it easier to deploy and use to get insights from Hadoop big data; SAP IBP...

• ### Chatbots provide faster self-service on SAP systems

The SAP SuccessFactors partnership with collaboration software vendor Slack is just one of many efforts to make little robotic ...

• ### SAP tops list of ERP vendors, but market is more evenly divided

Panorama Consulting says SAP continues as market leader among the top four ERP vendors. But the market has evened, and Microsoft ...

## SearchSQLServer

• ### Redgate tools help bring database DevOps to Visual Studio 2017

So far, data has been left out of the discussion. But database DevOps can grow if tools like Redgate's package for Visual Studio ...

• ### Conquer real-time operational analytics in SQL Server 2016

Analytics helps improve business operations, and SQL Server 2016 users can master it -- in real time, using operational data in a...

• ### SQL Server machine learning goes full throttle on operational data

Artificial intelligence is a hot topic in IT, and Microsoft has made strides to synchronize SQL Server with machine learning ...

## TheServerSide

• ### Amazon S3 outage a Fukushima moment for cloud computing

The Amazon S3 outage has turned into the Fukushima moment of cloud computing, as users re-evaluate the cloud's long-term ...

• ### GPU computing key to machine learning and big data performance

While the CPU remains central to data processing, massive gains in the area of AI analytics and dig data performance are being ...

• ### Why scaling Agile development calls for DevOps toolchain integration

Learn how Tasktop is battling the cost of scaling Agile development and the DevOps toolchain by integrating top tools.

## SearchDataCenter

• ### IBM's cloud dreams soar on the wings of AI, open source

Hoping to play catch-up with its web services archrivals, IBM has rolled out a raft of products and services fueled by AI and ...

• ### Fortify IoT infrastructure now, even for simple deployments

The IoT deployments in the enterprise today may not tax the current infrastructure, but it's not too soon to prep for the demands...

• ### Data center storage architecture moves toward software-defined memory

New IT developments converge storage and memory into a hybrid approach. Consequently, the idea of software-defined memory starts ...

## SearchContentManagement

• ### Microsoft Teams joins growing business chat software market

The general release of Microsoft's latest product puts Slack square in its scope, with hopes of taking a chunk from the business ...

Headless CMS can be a difficult pivot for dyed-in-the-wool legacy shops, but remixing content in this new model with RESTful APIs...

• ### Workplace collaboration tools aren't a nice-to-have anymore

Workplace collaboration software isn't just about convenient employee chat options. It's making employees and external partners ...

## SearchFinancialApplications

• ### Report rates e-sourcing, spend analysis and contract management tools

Gartner Magic Quadrant finds plenty of room for growth in market for cloud-based strategic sourcing application suites that can ...

• ### Benefits administration systems that use analytics liked by employers

HR tech systems are increasingly using analytics in benefits administration, including using claims data; meanwhile, APIs are ...

• ### Degreed integrates and organizes content from online learning software

Atlassian and Intel use cloud-based Degreed to integrate e-books, articles, videos and other content and recommend training for ...

Close