当前位置:网站首页>BI-SQL丨WHILE
BI-SQL丨WHILE
2022-08-02 02:11:00 【PowerBI丨白茶】
WHILE
WHILE,当的意思。在SQL的语法中,通常可以用来重复执行某段SQL脚本。
通俗来说,就是当XXX时,执行某某操作,意为循环。
看到这里,小伙伴可能会有疑问,PowerBI中是否有类似的操作呢?
答案是有的,不过此类操作我们一般都是在PowerQuery中进行的,在DAX中需要进行循环处理的情景较少。
而在SQL中,有很多场景都需要使用循环语句进行处理,比如数据更新或者递增计算等。
语法
WHILE 条件判断
BEGIN
执行操作
SET @[email protected]+1 --参数循环递增
END
注意:
如果嵌套了两个或多个 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
结果如下:
注:此操作无法在PowerBI中执行,会有报错。
例子2:
创建一张表,并在表中循环插入Price小于等于10的ProductName和Price。
USE CaseData
CREATE TABLE BaiCha
(Pname VARCHAR(50),
Prict INT
)
先创建一张表,结果如下:
执行以下语句:
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 [email protected]
SET @NUM = @NUM + 1;
END
结果如下:
我们来查看一下数据:
可以看到,价格小于等于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<[email protected]
BEGIN
SET @[email protected]*@NUM1
SET @[email protected]+1
END
PRINT @NUM3
SET @[email protected]+1
END
结果如下:
小Bug提示:
经常会有小伙伴循环写着写着就懵掉了,执行循环无法结束,也没有结果显示出来,这种情况下,需要对BEGIN里面的增量SET进行检测,看是否是由于未设置增量导致。
这里是白茶,一个PowerBI的初学者。
边栏推荐
- Coding Experience Talk
- Typescript31 - any type
- typescript31-any类型
- [ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)
- Ask God to answer, how should this kind of sql be written?
- 编码经验之谈
- MySQL optimization strategy
- Handwritten Blog Platform ~ Day Two
- MySQL8 download, start, configure, verify
- [LeetCode Daily Question]——654. The largest binary tree
猜你喜欢
typescript38-class的构造函数实例方法继承(implement)
Record the pits where an error occurs when an array is converted to a collection, and try to use an array of packaging types for conversion
volatile原理解析
Rust P2P Network Application Combat-1 P2P Network Core Concepts and Ping Program
6-24 exploit-vnc password cracking
3.Bean的作用域与生命周期
数据链路层的数据传输
ofstream,ifstream,fstream read and write files
用位运算为你的程序加速
Redis Subscription and Redis Stream
随机推荐
Garbage Collector CMS and G1
Day115.尚医通:后台用户管理:用户锁定解锁、详情、认证列表审批
2022-07-30 mysql8执行慢SQL-Q17分析
Software testing Interface automation testing Pytest framework encapsulates requests library Encapsulates unified request and multiple base path processing Interface association encapsulation Test cas
2023年起,这些地区软考成绩低于45分也能拿证
Centos7 install postgresql and enable remote access
Named parameter implementation of JDBC PreparedStatement
"NetEase Internship" Weekly Diary (1)
C语言之插入字符简单练习
【LeetCode每日一题】——654.最大二叉树
2022 Henan Youth Training League Game (3)
A good book for newcomers to the workplace
Coding Experience Talk
oracle查询扫描全表和走索引
Ask God to answer, how should this kind of sql be written?
Basic use of typescript34-class
Analysis of volatile principle
Rasa 3.x 学习系列- Rasa - Issues 4873 dispatcher.utter_message 学习笔记
Day115. Shangyitong: Background user management: user lock and unlock, details, authentication list approval
软件测试 接口自动化测试 pytest框架封装 requests库 封装统一请求和多个基础路径处理 接口关联封装 测试用例写在yaml文件中 数据热加载(动态参数) 断言