|
I know that part. But I need to create a View of some sort with 60 x 4 = 240 rows, I cant use Limit for both tables in a single query now, can i?
|
|
|
|
|
Only the first part of the solution: how to get the 60 rows from table_1:
SELECT table_1.PropID, FullStreetAddress, City, State, Zipcode, Remarks, Date, table_2.URL
FROM table_1 LEFT JOIN table_2 ON table_1.PropID=table_2.PropID
WHERE table_1.PropID IN
(SELECT PropID
FROM table_1
WHERE <your selection criteria>
LIMIT 60)
That's still with all releated rows from table_2.
|
|
|
|
|
ALTER PROCEDURE [dbo].[insert_task_details11]
@taskname varchar(150),
@completiondate varchar(30)
AS
BEGIN
DECLARE @DataID int
select DataID=MAX(taskid) from tblTaskAssign;
insert into tblJobs (taskid,taskname,completiondate) values (DataID,@taskname,@completiondate)
END
I want to insert maximum taskid into tblJobs.
It gives Error The name "DataID" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
and if I use @DataId instedat od DataID, null value goes in taskid in tblJobs.
How to solve this problem
thanks
|
|
|
|
|
Uma Shankar Patel wrote: select @DataID=MAX(taskid) from tblTaskAssign;
insert into tblJobs (taskid,taskname,completiondate) values (@DataID,@taskname,@completiondate)
Should work assuming that there are TaskID's in tblTaskAssign.
|
|
|
|
|
values are inserted but in TaskId column Null value inserted in tblJobs table.
i.e.
DataId is not inserted or not fetched properly from tblTaskAssign to be inserted into tblJobs
|
|
|
|
|
try this
DECLARE @DataID int
set @DataID = (select isnull(max(taskid),0) from tblTaskAssign)
insert into tblJobs (taskid,taskname,completiondate) values (@DataID ,@taskname,@completiondate)
I Love T-SQL
"VB.NET is developed with C#.NET"
If my post helps you kindly save my time by voting my post.
|
|
|
|
|
|
hi friends
i created a database in sqlserver2008 throught management studio now i edited one of my table ie inserted a new column in it and want to save it. but it says that the changes cannot be saved so how to do it plz let me know.
K.Gayathri
|
|
|
|
|
What else does it say about it? Is it because you have the table open in another window?
|
|
|
|
|
|
Did you define the new column to not allow NULL ? If so, then you need to define a default value for that column.
|
|
|
|
|
Today I wanted a function (in SQL Server 2008) to return the lesser of two integers, but it didn't seem to exist, so I wrote one, then decided that it might be somewhat more useful sometime in the future if it wasn't coded for integers, so I changed it to use numeric instead:
CREATE FUNCTION dbo.LesserOf
(
@Op1 NUMERIC
,
@Op2 NUMERIC
)
RETURNS NUMERIC
AS
BEGIN
DECLARE @result NUMERIC
IF ( @Op1 < @Op2 )
SET @result = @Op1
ELSE
SET @result = @Op2
RETURN @result
END
Is there some odd limitation involved with numeric that I don't know about (I never use them)?
Is there a better way to implement this simple function (not a CASE)?
Is there a built-in LesserOf function?
|
|
|
|
|
Try this as an exercise....
DECLARE @N NUMERIC
SET @N = 12.345
PRINT @N
DECLARE @N2 NUMERIC(5,3)
SET @N2 = 12.345
PRINT @N2
DECLARE @N3 NUMERIC(4,3)
SET @N3 = 12.345
PRINT @N3
The precision and scale parameters are important!
I don't speak Idiot - please talk slowly and clearly
'This space for rent'
Driven to the arms of Heineken by the wife
|
|
|
|
|
Ah, I thought that might be the case, thanks.
So what do you suggest? real ?
|
|
|
|
|
You could do this...
CREATE FUNCTION dbo.LesserOf
(
@Op1 NUMERIC(18,7)
,
@Op2 NUMERIC(18,7)
)
RETURNS NUMERIC(18,7)
AS
BEGIN
DECLARE @result NUMERIC(18,7)
IF ( @Op1 < @Op2 )
SET @result = @Op1
ELSE
SET @result = @Op2
RETURN @result
END
...or set the precision and scale to something bigger (20,7)...will give 13 significant numbers and 7 decimal places.
(I don't usually use real.)
I don't speak Idiot - please talk slowly and clearly
'This space for rent'
Driven to the arms of Heineken by the wife
|
|
|
|
|
I think T-SQL needs the Least function from PL-SQL.
It's more generic.
|
|
|
|
|
I'm trying to sum up a column twice, each with a separate condition
For example, if we have the following table:
Visitors
--------
MeetingID LocationID NumVisitors
1 1 3
1 1 5
1 3 7
2 1 9
2 5 3
2 5 4
4 3 10
I want to specify 2 Meeting IDs (lets say 1 & 2) and have the query return the following:
LocationID TotalNumVisitors1 TotalNumVisitors2
1 8 9
3 7 0
5 0 7
I tried using a full outer join on the table with itself, but that accumulates everything (both ids) together.
Select MeetingID, Sum(Visitors.NumVisitors) as NumVisitors1, Sum(Visitors1.NumVisitors) NumVisitors1
from Visitors
full outer join ...
where Visitors.MeetingId = 1 or Visitors1.MeetingId = 2
Group By ...
I then tried using sub-queries - that results in dis-joined return set - half of the columns are populated, the other half are null, then it switches
Select Visitors.MeetingId, TotalNumVisitors = (select Sum(Visitors.NumVisitors) from Visitors where Visitors.MeetingId = 1),
TotalNumVisitors1 = (select Sum(Visitors.NumVisitors) from Visitors where Visitors.MeetingId = 2)
where ...
LocationID TotalNumVisitors1 TotalNumVisitors2
1 8 NULL
1 NULL 9
3 7 NULL
5 NULL 7
Any ideas?
|
|
|
|
|
What database are you using?
Some have Pivot builtin.
Otherwise you can do it as a variation of this query:
Select LocationID
,Sum(Case when MeetingID = 1 then Numvisitors else 0) as TotalNumVisitors1
,Sum(Case when MeetingID = 2 then Numvisitors else 0) as TotalNumVisitors2
From Visitors
Group By LocationID
|
|
|
|
|
It's actually a query used to populate an rdl report.
Would that work if the calculation is more complex? It's actually adding the rows together, then multiplying by a number from a different table. Something like this maybe:
Select LocationID, Groups.GroupSize
,Sum(Case when MeetingID = 1 then (Group)*GroupSize + Numvisitors else 0) as TotalNumVisitors1
,Sum(Case when MeetingID = 2 then (Group)*GroupSize + Numvisitors else 0) as TotalNumVisitors2
From Visitors
join Groups on Visitors.SomeID = Groups.SomeID
Group By LocationID, GroupSize
I could probably work around this by adding some logic in the report, but it seems a bit cleaner to do my data handling in the query and have the report only display the data. And I figured there got to be an easy way to do that
I'll give it a try later, but it should probably work right?
|
|
|
|
|
Probably.
But personally I'm reluctant to use SQL for presentation logics, you'll find that it isn't very flexible.
I would simply get the data you need:
Select LocationID
,MeetingID
,Sum(Numvisitors) as TotalNumVisitors
From Visitors
where MeetingID IN (1,2)
Group By LocationID,MeetingID And then do the Pivot in Reporting Services where it's called "Matrix control". (Here I assume that your "rdl report" means you're using SSRS)
|
|
|
|
|
I Have complicated sql.
(there has many join sql.)
so i want to check executing time.
How can i check time?
Have a nice day.
hi
My english is a little.
anyway, nice to meet you~~
and give me your advice anytime~
|
|
|
|
|
SQL server management studio comes with SQL Query Analyzer[^] which can be used to analyse individual queries.
When I was a coder, we worked on algorithms. Today, we memorize APIs for countless libraries — those libraries have the algorithms - Eric Allman
|
|
|
|
|
print getdate()
execute yoursp
print getdate()
|
|
|
|
|
Hi .
I am working on a project that is about an audit procedure . it works for all of my tables except one. The one has 51 Fields and because the field has more than 25 field the power could not calculate the result of the Power Function of Sql server
CREATE FUNCTION [dbo].[GenColUpdated]
(@Col INT, @ColTotal INT)
RETURNS INT
AS
BEGIN
DECLARE
@ColByte INT,
@ColTotalByte INT,
@ColBit INT
-- Calculate Byte Positions
SET @ColTotalByte = 1 + ((@ColTotal-1) /8)
SET @ColByte = 1 + ((@Col-1)/8)
SET @ColBit = @col - ((@colByte-1) * 8)
-- gen Columns_Updated() value for given column position
RETURN
POWER(2, @colbit + ((@ColTotalByte-@ColByte) * 8)-1)
END
GO
I will Get this error for my table
Arithmetic overflow error for type int, value = 281474976710656.000000.
i have changed my datatype to int but again it has the same problem
------------------------------------------------------------
modified 2-Nov-11 2:25am.
|
|
|
|
|
So change your data type to a bigint in your variable declaration or use a float.
Also read the guidelines on how to ask a question!
Never underestimate the power of human stupidity
RAH
|
|
|
|