当前位置:网站首页>BI-SQL丨WHILE
BI-SQL丨WHILE
2022-07-30 13:39: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的初学者。
边栏推荐
- Logic Vulnerability----Permission Vulnerability
- 剑指 Offer 05. 替换空格
- 二手手机销量突破3亿部,与降价的iPhone夹击国产手机
- 重保特辑|拦截99%恶意流量,揭秘WAF攻防演练最佳实践
- 正确处理页面控制器woopagecontroller.php,当提交表单时是否跳转正确的页面
- 20220729 Securities, Finance
- ARC115F Migration
- R语言向前或者向后移动时间序列数据(自定义滞后或者超前的期数):使用dplyr包中的lag函数将时间序列数据向后移动一天(设置参数n为负值)
- IDEA 重复代码快速重构(抽取重复代码快捷键)
- CF338E Optimize!
猜你喜欢

What are the hard-core upgrades and applications that cannot be missed in Greenplum 6.0?

No-code development platform all application settings introductory tutorial

Skywalking入门

“12306” 的架构到底有多牛逼

腾讯称电竞人才缺口200万;华为鸿蒙3.0正式发布;乐视推行每周工作4天半?...丨黑马头条...

Shell变量与赋值、变量运算、特殊变量、重定向与管渠

无代码开发平台应用可见权限设置入门教程

一本通循环结构的程序设计第一章题解(1)

TaskDispatcher source code parsing

LeetCode二叉树系列——515.最每个树行中找最大值
随机推荐
缓存
No-code development platform all application settings introductory tutorial
[Advanced ROS] Lecture 11 Robot co-simulation based on Gazebo and Rviz (motion control and sensors)
CF338E Optimize!
【VMware虚拟机安装mysql5.7教程】
CF338E Optimize!
Synology system installation related file sharing
TaskDispatcher源码解析
权威推荐!腾讯安全DDoS边缘安全产品获国际研究机构Omdia认可
【ROS进阶篇】第十一讲 基于Gazebo和Rviz的机器人联合仿真(运动控制与传感器)
LeetCode二叉树系列——145.二叉树的后序遍历
自动化测试的生命周期是什么?
HCIP(第十五天) —— 交换机(一)
mongodb打破原则引入SQL,它到底想要干啥?
【Advanced Mathematics】【7】Double Integral
【自校正控制】自校正PID
激光雷达点云语义分割论文阅读小结
第十五天笔记
【软考软件评测师】自动化测试章节下篇
How awesome is the "12306" architecture?