• BI-SQL丨WHILE


    WHILE

    WHILE,当的意思。在SQL的语法中,通常可以用来重复执行某段SQL脚本。

    通俗来说,就是当XXX时,执行某某操作,意为循环。

    看到这里,小伙伴可能会有疑问,PowerBI中是否有类似的操作呢?

    答案是有的,不过此类操作我们一般都是在PowerQuery中进行的,在DAX中需要进行循环处理的情景较少。

    而在SQL中,有很多场景都需要使用循环语句进行处理,比如数据更新或者递增计算等。

    语法

    WHILE 条件判断
    BEGIN 
    执行操作 
    SET @i=@i+1 --参数循环递增
    END 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意:

    如果嵌套了两个或多个 WHILE 循环,首先运行内层循环结束之前的所有语句,然后下一个外层循环重新开始执行。

    使用实例

    案例数据:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在白茶本机的数据库中存在名为“CaseData”的数据库。

    “Dim_Date“日期表、"Dim_Product"产品表、"Fact_Sales"销售事实表。

    例子1:

    循环打印数字,从1到9。

    DECLARE @NUM INT;
    SET @NUM = 1;   
    WHILE @NUM<= 9
    BEGIN
       PRINT @NUM
       SET @NUM = @NUM + 1;
    END
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    结果如下:

    在这里插入图片描述

    注:此操作无法在PowerBI中执行,会有报错。

    例子2:

    创建一张表,并在表中循环插入Price小于等于10的ProductName和Price。

    USE CaseData
    CREATE TABLE BaiCha
    (Pname VARCHAR(50),
    Prict INT
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5

    先创建一张表,结果如下:
    在这里插入图片描述

    执行以下语句:

    USE CaseData
    DECLARE @NUM INT;
    SET @NUM=1
    WHILE @NUM<= 10
    BEGIN
       INSERT INTO BaiCha(Pname,Prict) 
       SELECT ProductName AS T1,Price AS T2 FROM Dim_Product WHERE Price=@NUM
       SET @NUM = @NUM + 1;
    END
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    结果如下:
    在这里插入图片描述

    我们来查看一下数据:

    在这里插入图片描述

    可以看到,价格小于等于10的产品信息已经插入到目标表中。

    例子3:

    利用双层循环,计算1到9的平方。

    USE CaseData
    DECLARE @NUM1 INT,@NUM2 INT ,@NUM3 VARCHAR(10);
    SET @NUM1=1;
    WHILE @NUM1<= 9 
    BEGIN
        SET @NUM2=1
        WHILE @NUM2<=@NUM1
        BEGIN
        SET @NUM3=@NUM2*@NUM1
        SET @NUM2=@NUM2+1
        END
    PRINT @NUM3
    SET @NUM1=@NUM1+1
    END
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    结果如下:

    在这里插入图片描述

    小Bug提示:

    经常会有小伙伴循环写着写着就懵掉了,执行循环无法结束,也没有结果显示出来,这种情况下,需要对BEGIN里面的增量SET进行检测,看是否是由于未设置增量导致。

    在这里插入图片描述
    在这里插入图片描述

    这里是白茶,一个PowerBI的初学者。

  • 相关阅读:
    Ubuntu-Docker-STF(devicefarmer)环境搭建 (android 12)
    抽象工厂模式
    显示相关
    从头开始——重新布置渗透测试环境的过程记录(From Windows To Mac)
    使用QT的QML实时显示海康威视网络摄像头的视频数据
    有关QT的问题大全
    电源芯片的选择简略
    LeetCode_494_目标和
    dpi是什么?如何更改dpi?(仅个人笔记,可能有误)
    2021年程序员自述:“别人是财源滚滚,我却是裁员滚滚”
  • 原文地址:https://blog.csdn.net/sterln/article/details/126070706