Mark Brown's Blog

TFS, Visual Studio, SQL Server, BizTalk, SharePoint, .Net, and more ...

How to do logic OR AND NOT across rows in SQL

Scenario

You have a normalized table that has values in rows.   Let's take an example that has a history table with an approved flag:

 Date  Approved  DollarValue  Customer
1/1/2008  Y    13.5    A
2/1/2008  N    12      A
3/1/2008  Y    14      A

1/1/2008  Y    11.5    B
2/1/2008  Y    9        B
3/1/2008  Y    17      B

1/1/2008  Y    13.5    C
2/1/2008  Y    29        C
3/1/2008  Y    18      C 

You want to find know if all the customers with all 3 monthly values approved and the values are < 20.    Now I know you can get at this result multiple ways but I just want to show how you can apply logic across rows.

First you know that there are 3 monthly records for all the months data and you are also looking for an approved.

SELECT DISTINCT Customer
FROM MyTable
WHERE Approved = 'Y' AND DollarValue < 20
GROUP BY Customer
HAVING COUNT(Customer) = 3

You should see an output with only Customer B.

Similar techniques can be applied for OR and NOT.

Published Monday, December 15, 2008 10:02 AM by mab
Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments

Leave a Comment

(required) 
(optional)
(required) 

  
Enter Code Here: Required
Submit

© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker