số tuần làm tên cột
Oct 02 2020
trước hết là câu lệnh sql của tôi:
SELECT DISTINCT
(
SELECT SUM(Preis1)
FROM tblBuchungsdaten
WHERE (Datum BETWEEN DATEADD(wk, -7, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))) AND DATEADD(wk, -6, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))))
)AS '7 weeks ago',
(
SELECT SUM(Preis1)
FROM tblBuchungsdaten
WHERE (Datum BETWEEN DATEADD(wk, -6, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))) AND DATEADD(wk, -5, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))))
)AS '6 weeks ago',
(
SELECT SUM(Preis1)
FROM tblBuchungsdaten
WHERE (Datum BETWEEN DATEADD(wk, -5, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))) AND DATEADD(wk, -4, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))))
)AS '5 weeks ago',
(
SELECT SUM(Preis1)
FROM tblBuchungsdaten
WHERE (Datum BETWEEN DATEADD(wk, -4, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))) AND DATEADD(wk, -3, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))))
)AS '4 weeks ago',
(
SELECT SUM(Preis1)
FROM tblBuchungsdaten
WHERE (Datum BETWEEN DATEADD(wk, -3, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))) AND DATEADD(wk, -2, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))))
)AS '3 weeks ago',
(
SELECT SUM(Preis1)
FROM tblBuchungsdaten
WHERE (Datum BETWEEN DATEADD(wk, -2, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))) AND DATEADD(wk, -1, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))))
)AS '2 weeks ago',
(
SELECT SUM(Preis1)
FROM tblBuchungsdaten
WHERE (Datum BETWEEN DATEADD(wk, -1, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))) AND DATEADD(wk, 0, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))))
)AS '1 week ago'
FROM tblBuchungsdaten;
Nó tạo ra đầu ra này: đầu ra hiện tại Cho đến nay tôi vẫn hài lòng với kết quả, nhưng bây giờ tôi rất thích có số tuần của mỗi phụ được chọn làm tên cột.
Đầu ra sẽ giống như sau: đầu ra cần thiết
Trả lời
1 Squirrel Oct 02 2020 at 14:30
Trên truy vấn hiện tại của bạn, bạn có thể thay đổi để sử dụng CASEcâu lệnh hoặcPIVOT
ví dụ dưới đây sử dụng CASEcâu lệnh
SELECT SUM (CASE WHEN Datum BETWEEN DATEADD(wk, -7, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE())))
AND DATEADD(wk, -6, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE())))
THEN Preis1
END) as '7 weeks ago',
SUM (CASE WHEN Datum BETWEEN DATEADD(wk, -6, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE())))
AND DATEADD(wk, -5, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE())))
THEN Preis1
END) as '6 weeks ago',
. . . . .
FROM tblBuchungsdaten
Và để có số tuần làm tên cột, bạn cần sử dụng Dynamic SQL. Kiểm tra sp_executesql