ใช้ datetime เป็นนามแฝงของคอลัมน์ใน SQL Server 2000

หวังว่านี่จะเป็นเรื่องด่วนสำหรับใครบางคน! ฉันค้นหามาระยะหนึ่งแล้วโดยไม่มีคำตอบที่แท้จริงสำหรับคำถามนี้ ฉันมีขั้นตอนการจัดเก็บใน SQL Server 2000 ฉันมีตัวแปร @DayToCheck ซึ่งเป็นวันที่และเวลา

@DayToCheck datetime

ฉันต้องใช้สิ่งนั้นกับคอลัมน์ที่ฉันคาดหวัง ยังไงก็ตามมันใช้งานไม่ได้ ฉันได้ลองแปลงเป็น varchar แล้ว แต่ก็ไม่ชอบเช่นกัน นี่คือคอลัมน์การนับสองคอลัมน์ที่ฉันต้องใช้

sum(case when startdate=@DayToCheck then 1 else 0 end) as CONVERT(varchar, @DayToCheck, 103),
sum(case when startdate=DATEADD(day,-7,@DayToCheck) then 1 else 0 end) as DATEADD(day,-7,@DayToCheck)

ดังนั้นด้านบนควรมีสองคอลัมน์และนามแฝงควรเป็นวันที่ (สำหรับคอลัมน์ที่หนึ่ง) และ -7 วันจากวันที่สำหรับคอลัมน์ที่สอง

ขอบคุณสำหรับความช่วยเหลือ!


person Matt Facer    schedule 10.05.2012    source แหล่งที่มา
comment
คุณต้องทำสิ่งนี้ในไดนามิก sql   -  person Arion    schedule 10.05.2012


คำตอบ (1)


คุณต้องใช้ไดนามิก sql ดังนั้นอาจเป็นดังนี้:

DECLARE @DayToCheck datetime
SET @DayToCheck=GETDATE()

DECLARE @query NVARCHAR(4000)
SET @query=
N'SELECT
    sum(case when startdate=@DayToCheck then 1 else 0 end) as '+
    CONVERT(varchar, @DayToCheck, 103)+',
    sum(case when startdate=DATEADD(day,-7,@DayToCheck) then 1 else 0 end) as '+
    CONVERT(varchar, @DayToCheck, 103)+'
FROM
    table1'

EXECUTE(@query)
person Arion    schedule 10.05.2012