【发布时间】:2018-07-01 02:16:34
【问题描述】:
我尝试编写的查询有问题。 该查询应该给我客户编号,该客户的总收入,并基于收入另一个值(即“金”、“银”或“铜”)。 我有一个查询,可以为我提供每个客户的总收入:
CREATE PROCEDURE sp_klantOverzicht
DECLARE @beginDatum DATETIME
DECLARE @eindDatum DATETIME
--AS
SET @beginDatum = '2013-01-01 00:00:00.000';
SET @eindDatum = '2017-01-01 00:00:00.000';
SELECT KLANT_NR, SUM(PRIJS) AS OMZET
FROM (
SELECT kl.KLANT_NR, SUM(DATEDIFF(d, h.STARTDATUM, h.EINDDATUM)*a.PRIJS_PER_D) AS PRIJS
FROM HUUROVEREENKOMST AS h
LEFT JOIN ARTIKEL AS a
ON h.BARCODE = a.BARCODE
LEFT JOIN KLANT AS kl
ON kl.KLANT_NR = h.KLANT_NR
WHERE DATEPART(year, h.STARTDATUM) BETWEEN DATEPART(year, @beginDatum)
AND DATEPART(year, @eindDatum)
GROUP BY kl.KLANT_NR
UNION
SELECT kl.KLANT_NR, SUM(a.PRIJS) AS PRIJS
FROM ARTIKEL AS a
LEFT JOIN KOOPOVEREENKOMST AS k
ON k.BARCODE = a.BARCODE
LEFT JOIN KLANT AS kl
ON kl.KLANT_NR = k.KLANT_NR
WHERE DATEPART(year, k.DATUM) BETWEEN DATEPART(year, @beginDatum)
AND DATEPART(year, @eindDatum)
GROUP BY kl.KLANT_NR
) AS overzicht
GROUP BY KLANT_NR
ORDER BY OMZET DESC
它会给我这样的结果:
现在,我需要检查“OMZET”列中的值是否高于 50、100 或 150,然后在第三列中添加“Bronze”、“Silver”或“Gold”。
我尝试通过SELECT 语句中的子查询来实现这一点,并创建了一个函数来计算第三列。但是没有结果。
谁能帮我找到正确的解决方案?
所有帮助将不胜感激!
【问题讨论】:
-
请尽可能使用文字代替图片。
-
@MichaWiedenmann Wiedenman 在这种情况下会有什么附加价值?
-
我更喜欢文字,也许我错了。人们似乎也更喜欢文字:meta.stackoverflow.com/questions/285551/…
标签: sql sql-server tsql