all groups > sql server reporting services > november 2004 >
You're in the

sql server reporting services

group:

Getting A Query Parameter from Elsewhere


Getting A Query Parameter from Elsewhere Hunter Hillegas
11/11/2004 3:35:01 PM
sql server reporting services:
I have a query on a table. This table has a datetime column.

I have another table. This table also has a datetime column. It has only one
row. It basically to store some simple configuration data.

There is no relation between the tables.

I want to be able to limit the entries returned by the query on the first
table by only returning rows that have a date that is less than the date in
the row in the second table.

I'm actually having trouble getting this to work properly. I've tried
subqueries, passing it through the report as a parameter, etc... None are
working.

Re: Getting A Query Parameter from Elsewhere Hunter Hillegas
11/11/2004 4:15:04 PM
If I use GROUP BY, will that not require aggregation of the results of the
query?

Perhaps it would be helpful to see the existing query:

SELECT SALESLINE.LINEAMOUNT AS INVOICEAMOUNT, SALESLINE.QTYORDERED AS QTY,
(SELECT SUM(MARKUPTRANS.VALUE)
FROM MARKUPTRANS
WHERE SALESTABLE.RECID =
MARKUPTRANS.TRANSRECID AND MARKUPTRANS.DATAAREAID = 'acm' AND
MARKUPTRANS.MARKUPCODE =
'Freight') AS FreightValue,
(SELECT SUM(INVENTSUM.POSTEDVALUE)
FROM INVENTSUM
WHERE SALESLINE.INVENTDIMID =
INVENTSUM.INVENTDIMID AND SALESLINE.DATAAREAID = 'acm') AS COGS
FROM SALESTABLE INNER JOIN
SALESLINE ON SALESTABLE.SALESID = SALESLINE.SALESID
WHERE (SALESTABLE.DATAAREAID = 'acm') AND (SALESLINE.DATAAREAID = 'acm')
AND (SALESTABLE.SALESSTATUS = 1)

That is table one. I want to limit on a column called CREATEDDATE.

The other query looks like:

SELECT CUTOFFDATE from CONFIGDATA



[quoted text, click to view]
Re: Getting A Query Parameter from Elsewhere Hunter Hillegas
11/11/2004 4:16:01 PM
If I use GROUP BY, will that not require aggregation of the results of the
query?

Perhaps it would be helpful to see the existing query:

SELECT SALESLINE.LINEAMOUNT AS INVOICEAMOUNT, SALESLINE.QTYORDERED AS QTY,
(SELECT SUM(MARKUPTRANS.VALUE)
FROM MARKUPTRANS
WHERE SALESTABLE.RECID =
MARKUPTRANS.TRANSRECID AND MARKUPTRANS.DATAAREAID = 'acm' AND
MARKUPTRANS.MARKUPCODE =
'Freight') AS FreightValue,
(SELECT SUM(INVENTSUM.POSTEDVALUE)
FROM INVENTSUM
WHERE SALESLINE.INVENTDIMID =
INVENTSUM.INVENTDIMID AND SALESLINE.DATAAREAID = 'acm') AS COGS
FROM SALESTABLE INNER JOIN
SALESLINE ON SALESTABLE.SALESID = SALESLINE.SALESID
WHERE (SALESTABLE.DATAAREAID = 'acm') AND (SALESLINE.DATAAREAID = 'acm')
AND (SALESTABLE.SALESSTATUS = 1)

That is table one. I want to limit on a column called CREATEDDATE.

The other query looks like:

SELECT CUTOFFDATE from CONFIGDATA

[quoted text, click to view]
Re: Getting A Query Parameter from Elsewhere Rodney Landrum
11/11/2004 5:58:58 PM
It would be possible to use a GROUP BY / HAVING in the SELECT if that was a
possibility for you. I am sure there are much better ways, but this is off
the cuff:

Select
MyDate, Field1, Field2 from table1
Group by
MyDate,Field1,Field2
HAVING MyDate < (Select LookUpDate from Table2)

You could always do it in a stored procedure and call in the value of Table2
into a variable @LokUpDate that yo could compare. I assume that the
LookUpDate in my example to match your description changes on a regular
basis?

Rodney Landrum - Author, "Pro SQL Server Reporting Services" (Apress)
http://www.apress.com

"Hunter Hillegas" <HunterHillegas@discussions.microsoft.com> wrote in
message news:3B202F07-F86B-43FB-9CCA-F7F27F74869F@microsoft.com...
[quoted text, click to view]

Re: Getting A Query Parameter from Elsewhere Rodney Landrum
11/11/2004 6:50:14 PM
You really do not have to add an aggregate function. You can always set a
variable and use that in the Where clause if you do not want to use the
GROUP BY. Something like ( and I added CREATEDATE to the WHERE clause also)
:
Declare @CUTOFFDATE as DATETIME

SELECT @CUTOFFDATE=CUTOFFDATE from CONFIGDATA

SELECT SALESLINE.LINEAMOUNT AS INVOICEAMOUNT, SALESLINE.QTYORDERED AS
QTY,
(SELECT SUM(MARKUPTRANS.VALUE)
FROM MARKUPTRANS
WHERE SALESTABLE.RECID =
MARKUPTRANS.TRANSRECID AND MARKUPTRANS.DATAAREAID = 'acm' AND
MARKUPTRANS.MARKUPCODE =
'Freight') AS FreightValue,
(SELECT SUM(INVENTSUM.POSTEDVALUE)
FROM INVENTSUM
WHERE SALESLINE.INVENTDIMID =
INVENTSUM.INVENTDIMID AND SALESLINE.DATAAREAID = 'acm') AS COGS
FROM SALESTABLE INNER JOIN
SALESLINE ON SALESTABLE.SALESID = SALESLINE.SALESID
WHERE (SALESTABLE.DATAAREAID = 'acm') AND (SALESLINE.DATAAREAID =
'acm')
AND (SALESTABLE.SALESSTATUS = 1) AND CREATEDATE < @CUTOFFDATE


You may have to make this a stored procedure if it will not work on the IDE
for reporting Services.


Rodney Landrum -Author, "Pro SQL Server Reporting Services" (Apress)
http://www.apress.com




"Hunter Hillegas" <HunterHillegas@discussions.microsoft.com> wrote in
message news:211E0BCB-A461-485A-B888-333A33E33162@microsoft.com...
[quoted text, click to view]

Re: Getting A Query Parameter from Elsewhere Bruce L-C [MVP]
11/12/2004 11:17:02 AM
I might be missing something but this looks like the following to me:

select a.* from maintable a, configtable b where a.datetimecolumn <
b.datetimecolumn

--
Bruce Loehle-Conger
MVP SQL Server Reporting Services


"Hunter Hillegas" <HunterHillegas@discussions.microsoft.com> wrote in
message news:3B202F07-F86B-43FB-9CCA-F7F27F74869F@microsoft.com...
[quoted text, click to view]

AddThis Social Bookmark Button