[英]SQL join using alias using calculated column
這是一個查詢,它將各個年份列反透視為 yr 和 yr_val 2 列。 當 yr=year(getdate()) 時,將返回當前年份值。 GMB 使用 unpivot 查詢。
select a.*
from d1 a
cross apply
(values (2018, a.[2018]),
(2019, a.[2019]),
(2020, a.[2020]),
(2021, a.[2021]),
(2022, a.[2022]),
(2023, a.[2023]),
(2024, a.[2024])) v(yr, yr_val)
where v.yr=year(getdate());
在純 SQL 中,您不能讓查詢動態選擇它應該返回的列。 查詢返回一組固定的列,數據庫需要在解析查詢時知道,然后再執行。
您可以使用動態 SQL 解決一些問題 - 但它似乎只會使事情變得不必要地復雜。
更好的選擇是更改您的數據模型,以便將每個值存儲在單獨的行而不是列中:
name year value
A 2018 18
A 2019 24
A 2020 72
B 2018 38
B 2019 19
B 2020 76
然后,查詢很簡單:
select * from mytable where year = year(getdate())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.