SO i had the need to increment the ID in one of my lists and it was hairy to try to add and delete items via the API just to do this. SO i broke down and looked into SQL server. Open you content db and run a qry like this with you List GUID. Then go ahead and run the update. So far so good for me, let me know if i missed something.
SELECT tp_NextAvailableId, * FROM AllLists WHERE (tp_ID = 'bcf068c4-d585-4168-8ba8-1f28eb58003c')
--Update AllLists --set tp_NextAvailableId = 150 --where (tp_ID = 'bcf068c4-d585-4168-8ba8-1f28eb58003c')
Simple function to get the first day of the week. It seems to perform nicly also.
ALTER FUNCTION [dbo].[F_Get_Sunday] (@MidWeekDate DateTime)
RETURNS DateTime AS
BEGIN
DECLARE @WeekCommence DateTime
SET @WeekCommence = DateAdd(d, -((@@DATEFIRST + DatePart(dw, @MidWeekDate) -1) % 7), @MidWeekDate)
RETURN CAST(FLOOR( CAST(@WeekCommence as FLOAT)) AS DATETIME)
END
Here is a simple example of a pivot function in SQL 2005
CREATE TABLE #UserTime
(
UserName VARCHAR(50),
Class VARCHAR(50),
Week_Date DATETIME,
Hours DECIMAL(5,2),
CategoryName VARCHAR(50),
IsBillable BIT,
CategoryAppr VARCHAR(5)
)
INSERT INTO #UserTime SELECT 'SYOKIEL','MPLS','2008-02-17',40,'Client Billable', 1,'CB'
INSERT INTO #UserTime SELECT 'SYOKIEL','MPLS','2008-02-24',16.00 ,'Administration' , 0,'AD'
INSERT INTO #UserTime SELECT 'SYOKIEL','MPLS','2008-02-24',3.00,'Client Billable' ,1,'CB'
INSERT INTO #UserTime SELECT 'SYOKIEL','MPLS','2008-02-24',21.00,'PTO' ,0,'PTO'
INSERT INTO #UserTime SELECT 'SYOKIEL','MPLS','2008-03-02',40.00,'Client Billable' ,1,'CB'
INSERT INTO #UserTime SELECT 'SYOKIEL','MPLS','2008-03-09',36.00 ,'Client Billable',1,'CB'
INSERT INTO #UserTime SELECT 'SYOKIEL','MPLS','2008-03-09',4.00 ,'PTO',0,'PTO'
Select * from #UserTime
--SELECT Final.UserName,Final.Week_Date, SUM(Final.CB) ,SUM(Final.AD),SUM(Final.PTO)
--from
--(SELECT UserName,Week_Date, [CB] as CB, [AD] as AD, [PTO] as PTO
-- FROM #UserTime AS P
-- PIVOT
-- (
-- Sum(P.Hours)
-- FOR P.CategoryAppr
-- IN([CB], [AD], [PTO])
-- ) AS Pivoted
--) as Final
--Group By Final.UserName,Final.Week_Date
SELECT UserName, Week_Date, SUM([0]) as NonBillable, SUM([1]) as Billable
FROM #UserTime AS P
PIVOT
(Sum(P.Hours)
FOR P.IsBillable
IN([0], [1])
) AS Pivoted
Group By UserName, Week_Date
DROP TABLE #UserTime
Heres's a simple way to pass in a xml chunk that you can easiy put int atemp table to join to. DECLARE @X xml SET @X = '<root><value id=''12196825'' /></root>' SELECT List.c.value('.','int') FROM @X.nodes('/root/value/@id') List(c)
|
|
Copyright © 2008 RBA Consulting.
|
|