I have a table like this:
Product | ImageVersion | ImageName | ImageBinary |
---|---|---|---|
Gizmo | 1 | Green | 0x45679ABC |
Gizmo | 1 | Blue | 0x5679ABCD |
Gizmo | 1 | Red | 0x679ABCDE |
Widget | 1 | Green | 0x01234567 |
Widget | 1 | Blue | 0x12345678 |
Widget | 1 | Red | 0x23456789 |
Widget | 2 | Red | 0x345679AB |
I would like to get the latest ImageBinary for a given Product and ImageName
I have a query that is close. A, B, and C return the desired ImageBinary. D returns nothing. Can someone tell me what I am doing wrong?
-- A
SELECT a.ImageBinary
FROM [Database].[dbo].[DataTable] a
LEFT JOIN [Database].[dbo].[DataTable] b
ON a.ImageName = b.ImageName AND a.ImageVersion < b.ImageVersion
WHERE b.ImageVersion Is NULL AND a.ImageName = 'Green' AND a.Product = 'Widget'
-- B
SELECT a.ImageBinary
FROM [Database].[dbo].[DataTable] a
LEFT JOIN [Database].[dbo].[DataTable] b
ON a.ImageName = b.ImageName AND a.ImageVersion < b.ImageVersion
WHERE b.ImageVersion Is NULL AND a.ImageName = 'Green' AND a.Product = 'Gizmo'
-- C
SELECT a.ImageBinary
FROM [Database].[dbo].[DataTable] a
LEFT JOIN [Database].[dbo].[DataTable] b
ON a.ImageName = b.ImageName AND a.ImageVersion < b.ImageVersion
WHERE b.ImageVersion Is NULL AND a.ImageName = 'Red' AND a.Product = 'Widget'
-- D
SELECT a.ImageBinary
FROM [Database].[dbo].[DataTable] a
LEFT JOIN [Database].[dbo].[DataTable] b
ON a.ImageName = b.ImageName AND a.ImageVersion < b.ImageVersion
WHERE b.ImageVersion Is NULL AND a.ImageName = 'Red' AND a.Product = 'Gizmo'
===================================
USE [Database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DataTable](
[Product] [varchar](20) NOT NULL,
[ImageVersion] [int] NOT NULL,
[ImageName] [varchar](30) NOT NULL,
[ImageBinary] [varchar](max) NULL,
CONSTRAINT [PK_DataTable_1] PRIMARY KEY CLUSTERED
(
[Product] ASC,
[ImageVersion] ASC,
[ImageName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO